本例**為 headfirst python,稍作改動。不愧為深入淺出,很棒的例子。
畢竟經過了一點改動,我就厚顏無恥地把標題定為原創了。。。
定義乙個類,繼承list的屬性和方法。
假設田徑隊100公尺訓練後,我們需要儲存一組資料來記錄各個運動員的成績,分別要儲存運動員的
姓名,出生日期和每次100公尺的成績。可以有多種方式儲存,直接存在list或dictionary裡都行。這裡我
們使用自己定義的儲存方式athletelist方式儲存。用字串儲存運動員的姓名和出生日期,用list來儲
存各次100公尺成績。
class athletelist(list):
def __init__(self, a_name, a_dob=none, a_time=):
list.__init__()
self.name=a_name
self.dob=a_dob
self.extend(a_time)
在自己的類名後加入(list)以表示繼承list類。__init__函式中,第乙個引數永遠是self。接下來,呼叫lis
的建構函式,list.__init__(), 注意此時引數填入。剩下就是給類的成員賦值了。本類的物件本身就
是list,直接儲存了百公尺成績,所以檢視成績是可直接呼叫類名。
在shell中演示如何使用這個類。
>>> a=athletelist('james', '1992', ["14'2''","13'33''"])
此語句執行時,實際執行的是
a=athletelist.__init__(a, 'james', '1992', ["14'2''","13'33''"])
>>> a
["14'2''", "13'33''"]
>>> print(a)
["14'2''", "13'33''"]
>>> for each in a:
print(each)
14'2''
13'33''
由於繼承了list,類athletelist兼有了list的屬性,呼叫方法時可當做list物件呼叫,所以呼叫a和呼叫
a.time 都能得到記錄時間的列表。
>>> a.name
'james'
>>> a.dob
'1992'
呼叫成員得到姓名和出生年月的資訊。
接下來試試list中原有的方法呼叫。
>>> a
["14'2''", "13'33''", '99']
>>> a.insert(1,'5553')
>>> a
["14'2''", '5553', "13'33''", '99']
python繼承定義 python中繼承如何定義
python中繼承如何定義 閱讀 66 物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種能力 它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。通過繼承建立的新類稱為 子類 或 派生類 被繼承的類稱為 基類 父類 或 超類 繼承的過程,就是從...
Python 中 類當中繼承多型的案例
多型 統一呼叫每乙個類當中相同的方法,讓每乙個物件具備相同的介面 class schoolperson 學校有哪些人 def init self,name,age 建立例項方法 self.name,self.age name,age print f 例項化學校成員 defsay self print...
Python中繼承的優缺點
1 不要試圖在內建型別的子類中重寫方法,可以繼承collections的可拓展類尋求變通 2 掌握多重繼承中的mro和super 3 了解處理多重繼承的一些建議。1 內建型別的方法不會呼叫子類覆蓋的方法 內建類可以子類化,但是內建型別的方法不會呼叫子類覆蓋的方法。下面以繼承dict的自定義子類重寫 ...