Python 類方法中呼叫父類的類方法

2021-10-02 02:27:23 字數 1302 閱讀 1071

3. `super()`測試(推薦使用,安全)

如果類的物件方法呼叫父類的物件方法,可以使用super()函式獲取父類的物件方法

如果在類方法中呼叫父類的類方法,則可以使用super()(推薦,暫時未發現問題)或者cls.__base__屬性(不推薦,我用的時候出現未知錯誤)獲取父類的類方法。

為什麼使用屬性會出現問題?因為在繼承時,有時候情況比較複雜,這個時候需要靈活一些才能推導出來正確的值,屬性是死的,沒有推導這一過程。而方法則是活的,呼叫方法之後可以根據不同的情況執行不同的**,以獲取正確的值,因此使用super()方法不會出現問題。

classa:

@classmethod

deft

(cls)

:print

("a"

)class

b(a)

: @classmethod

deft

(cls)

:print

(cls.__base__)

class

c(b)

: @classmethod

deft

(cls)

:print

(cls.__base__)

b.t(

)c.t(

)

<

class

'__main__.a'

>

<

class

'__main__.b'

>

classa:

@classmethod

deft

(cls)

:print

("a"

)class

b(a)

: @classmethod

deft

(cls)

:super()

.t()

print

("b"

)class

c(b)

: @classmethod

deft

(cls)

:super()

.t()

print

("c"

)b.t(

)print

("--------"

)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...