当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
1: 子类继承了父类的所有功能,即方法和属性
2: 当子类中方法和属性同父类中一样时,子类会覆盖父类的方法和属性。但不会影响父类的方法和属性,仍然可以通过父类的实例调用父类。
3: 由于第二点的说明,当子类和父类同样都有__init__方法时,子类只会调用自己的,但是如果子类没有__init__方法时,就会调用父类的__init__方法.
4: Python支持多重继承
classParent1(object):
Parent1_Name ="jim"
def__init__(self):
print("This is Parent1 class.")
defprint_parent1(self):
print("Parent name=",self.Parent1_Name)
classParent2(object):
Parent2_Name ="della"
def__init__(self):
print("This is Parent2 class.")
defprint_parent2(self):
print("Parent name=",self.Parent2_Name)
#定义子类,有两个父类
classChild(Parent1,Parent2):
Child_Name ="Kevin"
#定义同名属性,在子类中调用的话,就会覆盖该属性。
Parent2_Name ="kevin"
def__init__(self):
print("this is child")
@classmethod
defparent_count(cls):
# __bases__类属性输出,它是一个包含其父类的结合的元祖。
print(cls.__bases__)
#定义三级子类
classGrandChild(Child):
GrandChild_Name ="grand"
#没有定义自己的__init__方法,就会调用父类的__init__方法
@classmethod
defprint_GrandChild(cls):
#调用多级父类的属性和方法
print(cls.Parent1_Name)
print(cls.Child_Name)
if__name__ =="__main__":
t1= Child()
'''
子类继承了父类所有的功能,所以可以直接使用父类的方法和属性,当子类的方法和属性,同父类一致时,覆盖父类的方法和属性
'''
t1.print_parent1()
print(t1.Parent2_Name)
t2=GrandChild()
t2.print_GrandChild()
领取专属 10元无门槛券
私享最新 技术干货