類(class),可以繼承基類以便形成具有自己獨特屬性的類,我們在面向對象的編程中,經常用到類及其繼承,可以說沒有什么不是類的,今天我們就來詳細探討一下在python中,類的繼承是如何做的。
-
我們假設有一個類叫做point,顧名思義,point就是一個點,它有橫坐標和縱坐標。我們在python中創建一個point類(書上說類名稱都要開頭字母大寫,這是國際慣例)
-
最簡單的繼承類的方式是這樣:只需要在生命類的時候加一個括號和基類
-
這種方法並沒有聲明該類的構造器,這樣它會隱性調用基類的構造器,所以,在實例化的時候,也要注意基類的構造器需要哪些參數,不要出現這樣的錯誤:這種錯誤容易發生是因為我們在子類的聲明中並沒有看到什么參數,在使用的時候就容易忘記基類中需要的參數
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
a=point1()
TypeError: __init__() takes exactly 3 arguments (1 given)
-
這樣來用就沒問題了。
-
類的繼承一般情況下,我們都是要重寫類的構造器,然后再調用基類的構造器,不然基類的構造器在這種情況下不會自動調用。應該這樣寫:類point2比基類增加了一個屬性z
-
實例化:
-
我們看這樣一個寫法特別容易出錯:你能看出哪里錯了嗎?
錯誤代碼:
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
b=point2(1,2,3)
File "<pyshell#45>", line 3, in __init__
point.__init__(x,y)
TypeError: unbound method __init__() must be called with point instance as first argument (got int instance instead)