3. `super()`測試(推薦使用,安全)
如果類的物件方法呼叫父類的物件方法,可以使用super()
函式獲取父類的物件方法
如果在類方法中呼叫父類的類方法,則可以使用super()
(推薦,暫時未發現問題)或者cls.__base__
屬性(不推薦,我用的時候出現未知錯誤)獲取父類的類方法。
為什麼使用屬性會出現問題?因為在繼承時,有時候情況比較複雜,這個時候需要靈活一些才能推導出來正確的值,屬性是死的,沒有推導這一過程。而方法則是活的,呼叫方法之後可以根據不同的情況執行不同的**,以獲取正確的值,因此使用super()方法不會出現問題。
classa:
@classmethod
deft
(cls)
("a"
)class
b(a)
: @classmethod
deft
(cls)
(cls.__base__)
class
c(b)
: @classmethod
deft
(cls)
(cls.__base__)
b.t(
)c.t(
)
<
class
'__main__.a'
>
<
class
'__main__.b'
>
classa:
@classmethod
deft
(cls)
("a"
)class
b(a)
: @classmethod
deft
(cls)
:super()
.t()
("b"
)class
c(b)
: @classmethod
deft
(cls)
:super()
.t()
("c"
)b.t(
("--------"
)c.t(
)
ab-
----
---a
bc
Python中呼叫父類的同名方法
物件導向設計時,無可避免的會涉及到父類和子類的關係 封裝 整合 多型,大家都能娓娓道來 道理是一樣的,針對不同的語言,物件導向開發也會遇到不同情況需要解決 今天學習下python中如何呼叫父類同名方法 ps 如果不呼叫的話,子類同名方法對父類方法是直接覆蓋的 class fooparent def ...
Python 子類呼叫父類方法
python在繼承時,如果子類重寫了init 函式,則父類的init 不會被呼叫,這時如果子類只是想要對父類的init 函式進行簡單的擴充套件的話,是很不方便的。那麼有沒有比較方便的方法來從子類呼叫父類呢?第一種是直接使用父類的類名來直接呼叫。python3.3 class parent def i...
重寫父類方法和呼叫父類方法
class animal object def eat self print 吃 def drink self print 喝 class dog animal def bark self print 汪汪叫 print 汪汪叫 print 汪汪叫 print 汪汪叫 print 汪汪叫 class...