python繼承,調(diào)用父類屬性方法
在python里面,繼承一個(gè)類只需要這樣寫:
classAnimal:
defheshui(self):
print('動(dòng)物正在喝水')
classCat(Animal):
pass
這樣Cat就有了Animal的所有屬性和方法,調(diào)用的時(shí)候直接調(diào)用就可以了:
#接上面代碼
cat=Cat()
cat.heshui()
>>>動(dòng)物正在喝水
這個(gè)時(shí)候,如果子類想重寫父類的方法,可以直接重寫:
classAnimal:
defheshui(self):
print('動(dòng)物正在喝水')
classCat(Animal):
defheshui(self):
print('貓正在喝水')
cat=Cat()
cat.heshui()
>>>貓正在喝水
如果想調(diào)用父類的heshui這個(gè)方法,可以用super():
classAnimal:
defheshui(self):
print('動(dòng)物正在喝水')
classCat(Animal):
defheshui(self):
super().heshui()
cat=Cat()
cat.heshui()
>>>動(dòng)物正在喝水
強(qiáng)制調(diào)用父類私有屬性方法
如果父類的方法是私有方法,如def__heshui(self)這樣的話再去調(diào)用就提示沒有這個(gè)方法,其實(shí)編譯器是把這個(gè)方法的名字改成了_Animal__heshui(),如果強(qiáng)制調(diào)用,可以這樣:
classAnimal:
def__heshui(self):
print('動(dòng)物正在喝水')classCat(Animal):
defheshui(self):
super()._Animal__heshui()
cat=Cat()
cat.heshui()>>>動(dòng)物正在喝水
最后,如果自己也定義了__init__方法,那么父類的屬性是不能直接調(diào)用的:
classAnimal:
def__init__(self):
self.a='aaa'
classCat(Animal):
def__init__(self):
pass
cat=Cat()
print(cat.a)
>>>AttributeError:'Cat'objecthasnoattribute'a'
那么可以在子類的__init__中調(diào)用一下父類的__init__方法,這樣就可以調(diào)用了:
classAnimal:
def__init__(self):
self.a='aaa'classCat(Animal):
def__init__(self):
super().__init__()#也可以用Animal.__init__(self)這里面的self一定要加上
cat=Cat()
print(cat.a)>>>aaa
以上內(nèi)容為大家介紹了python培訓(xùn)之可以繼承父類方法嗎,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。