python3 类的继承

来源:互联网 发布:hp打印机输入端口名 编辑:程序博客网 时间:2024/05/14 16:02

类的继承

继承

基本语法:

class DerivedClassName(BaseClassName1):    <statement-1>    .    .    .    <statement-N>

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

示例:

class A(object):    passclass B(object):    passclass C(A, B):    pass

C 继承了 A 和 B,C 称为 A,B 的派生类,C 可以直接获取 A 和 B 里面定义的所有方法和变量

派生类在寻找变量和方法的时候,优先寻找自身的方法和变量,最后在去继承的类里面去寻找。

类自身的 __init__ 方法不会被其他类调用。但是可以调用。参考继承示例

继承示例

# 定义基本类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))s = student('ken',10,60,3)s.speak()

父级类的 __init__ 方法可以被子级的类调用

子级类如果包含和父级类一样的变量或方法,会在调用的时候,覆盖父级类的变量或方法。

多继承

示例

class DerivedClassName(Base1, Base2, Base3):    <statement-1>    .    .    .    <statement-N>

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

若子类中有相同的方法或变量,优先调用子类的方法或变量

#类定义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()   #方法名同,默认调用的是在括号中排前地父类的方法
原创粉丝点击