• Python中的单继承与多继承实例分析


    Python中的单继承与多继承实例分析

    本文实例讲述了Python中的单继承与多继承。分享给大家供大家参考,具体如下:

    单继承

    一、介绍

    Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。派生类的定义如下所示:    
    class DerivedClassName(BaseClassName1):
     
      .
      .
      .
     

    需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类中是否包含方法。

    BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。
    除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:    
    class DerivedClassName(modname.BaseClassName):

    二、代码    
    # -*- coding:utf-8 -*-
    #! python3
    class people:
      #定义基本属性
      name =''
      age =0
      #定义私有属性,私有属性在类外部无法直接进行访问
      __weight =0
      #定义构造方法
      def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
      def speak(self):
        print("%s 说: 我 %d 岁。"%(self.name,self.age))
        #单继承示例
    class student(people):
      grade =''
      def __init__(self,n,a,w,g):
        #调用父类的构造函数,下面两种方式都可以
        #people.__init__(self,n,a,w)
        super().__init__(n,a,w)
        self.grade = g
        #覆写父类的方法
      def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
    s = student('ken',10,60,3)
    s.speak()

    三、运行结果

        ken 说: 我 10 岁了,我在读 3 年级

    多继承

    一、介绍

    Python同样有限的支持多继承形式。多继承的类定义形如下例:    
    class DerivedClassName(Base1, Base2, Base3):
     
      .
      .
      .
     

    需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

    二、代码    
    # -*- coding:utf-8 -*-
    #! python3
    #类定义
    class people:
      #定义基本属性
      name =''
      age =0
      #定义私有属性,私有属性在类外部无法直接进行访问
      __weight =0
      #定义构造方法
      def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
      def speak(self):
        print("%s 说: 我 %d 岁。"%(self.name,self.age))
    #单继承示例
    class student(people):
      grade =''
      def __init__(self,n,a,w,g):
        #调用父类的构函
        people.__init__(self,n,a,w)
        self.grade = g
      #覆写父类的方法
      def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
    #另一个类,多重继承之前的准备
    class speaker():
      topic =''
      name =''
      def __init__(self,n,t):
        self.name = n
        self.topic = t
      def speak(self):
        print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))
    #多重继承
    class sample(speaker,student):
      a =''
      def __init__(self,n,a,w,g,t):
        student.__init__(self,n,a,w,g)
        speaker.__init__(self,n,t)
    test = sample("Tim",25,80,4,"Python")
    test.speak()#方法名同,默认调用的是在括号中排前地父类的方法
    三、运行结果
        我叫 Tim,我是一个演说家,我演讲的主题是 Python

     

  • 相关阅读:
    打印九九乘法表
    PAT (Basic Level) Practice (中文) 1091 N-自守数 (15分)
    PAT (Basic Level) Practice (中文)1090 危险品装箱 (25分) (单身狗进阶版 使用map+ vector+数组标记)
    PAT (Basic Level) Practice (中文) 1088 三人行 (20分)
    PAT (Basic Level) Practice (中文) 1087 有多少不同的值 (20分)
    PAT (Basic Level) Practice (中文)1086 就不告诉你 (15分)
    PAT (Basic Level) Practice (中文) 1085 PAT单位排行 (25分) (map搜索+set排序+并列进行排行)
    PAT (Basic Level) Practice (中文) 1083 是否存在相等的差 (20分)
    PAT (Basic Level) Practice (中文) 1082 射击比赛 (20分)
    PAT (Basic Level) Practice (中文) 1081 检查密码 (15分)
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586387.html
Copyright © 2020-2023  润新知