如果想在子类中调用父类的方法可以用类名去直接调用,这时候self参数不能省略。
class Animal:
def __init__(self,name,age,weight):
self.name=name
self.age=age
self.weight=weight
class Dog(Animal):
def __init__(self,name,age,weight,owner):
Animal.__init__(self,name,age,weight)#注意这里不能使用Animal(name,age,weight)
self.owner=owner
d1=Dog('小白','2','20','小黑')
print('%s的主人是%s'%(d1.name,d1.owner)) #小白的主人是小黑
上面的方法虽然可以实现基本的功能,但是可拓展性比较差。因为当父类名字发生修该时下面就必须进行修改。这时候可以使用super()方法就可以解决这问题。
class Animal:
def __init__(self,name,age,weight):
self.name=name
self.age=age
self.weight=weight
class Dog(Animal):
def __init__(self,name,age,weight,owner):
super().__init__(name,age,weight)
self.owner=owner
d1=Dog('小白','2','20','小黑')
print('%s的主人是%s'%(d1.name,d1.owner))#小白的主人是小黑