如果想在子类中调用父类的方法可以用类名去直接调用,这时候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))#小白的主人是小黑