Python3【類】繼承
阿新 • • 發佈:2018-11-25
繼承是面向物件的一個基本準則,繼承允許我們在兩個或者更多的類之間建立一種關係。
基本繼承
從技術上將,每一個Python類的建立都是用了繼承,所有的類都是一個叫做object的特殊類的子類。不具體指明的時候,自動繼承過來。當然,亦可以通過下面的方式現實的從object類繼承。
class MyClass(object):
語法:
在定義一個新的類的時候,在類名的括號裡面包含父類的名字就可以了。這樣,這個新定義的類,就可以實現父類的功能。
擴充套件內建類
例如,我們想要把聯絡人新增到列表裡。同時西門想通過名字實現搜尋。那麼我們需要給列表新增一個搜尋功能。例如,下面把list這個內建類擴充套件了,添加了搜尋功能。
class ContactList(list):
def search(self,name):
'''Return all contacts that contain the search value
in their name.'''
matching_contacts = []
for contact in self:
if name in contact.name:
matching_contacts.append(contact)
return matching_contacts
class Contact:
all_contacts=ContactList()
def __init__(self, name, email):
self.name = name
self.email = email
self.all_contacts.append(self)
重寫方法
當我們通過繼承父類可以實現很多功能,但是當我們想要改變其中的一些功能的時候,就可以通過重寫來實現。
重寫和其他語言裡面是差不多的。在子類裡面有一個與父類名字相同的方法來覆蓋父類的這個方法。例如,通過重寫初始化函式,增加一個電話號碼屬性。
class Friend(Contact):
def __init__(self,name email,phone):
self.name = name
self.email = email
self.phone = phone
多重繼承
從多個父類繼承。可以訪問所有父類的功能。但是通常 不推薦使用。
多型
多型,即有多種形態。這意味著即便不知道變數指向的是哪種物件,也能夠對其執行操作,且操作將隨著物件的型別變化而變化。
通常,沒一個型別都會自己定義對應的方法。例如,在C++中,vector,string,queue等等的STL類,都自己定義了size()這個功能,我們在使用的時候,無需知道物件到底是什麼,他們都可以直接使用這個方法。
在python中也是一樣的道理。不同的類都自己定義對應的方法。