python 類中super 方法的使用

2021-10-09 06:40:35 字數 1615 閱讀 1342

super()是python中子類呼叫父類的一種方法:

對於不呼叫super().init()會出現某些錯誤:

詳情請看:

class

engine

:def

__init__

(self)

: self.performance =

80class

skeleton

:def

__init__

(self)

: self.shape =

'rectangle'

class

car(engine, skeleton)

:def

__init__

(self)

:super()

.__init__(

)def

deliver

(self)

:print

(self.performance)

print

(self.shape)

if __name__ ==

'__main__'

: bmw = car(

) bmw.deliver(

)

以上**執行的時候會報錯:

80

traceback (most recent call last):

file "/root/myproject/mywebsite/test.py", line 40, in bmw.deliver()

file "/root/myproject/mywebsite/test.py", line 35, in deliver

print(self.shape)

attributeerror: 'car' object has no attribute 'shape'

修改方案:

class

engine

:def

__init__

(self)

: self.performance =

80class

skeleton

:def

__init__

(self)

: self.shape =

'rectangle'

class

car(engine, skeleton)

:def

__init__

(self)

:# 單獨呼叫兩個父類

engine.__init__(self)

skeleton.__init__(self)

defdeliver

(self)

:print

(self.performance)

print

(self.shape)

if __name__ ==

'__main__'

: bmw = car(

) bmw.deliver(

)

python 中類繼承的super 方法

參考 python中的super 方法主要用於子類引用父類方法,因為這樣做可以提高 的復用性 usr bin env python coding utf 8 用於測試類繼承的super 方法 class a object 父類 def init self,a,b self.a a self.b b ...

python類中super 用法

note super only works for new style classes.super 函式的乙個常見用法是在 init 方法中確保父類被正確的初始化了作用super 函式是子類用於呼叫父類 超類 的乙個方法。super 是用來解決多重繼承問題的,直接用類名呼叫父類 base.init ...

Python呼叫父類方法之super()

super 方法的語法 super type object or type super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序 mro 重複呼叫 鑽石繼承 等種種問題。在super方法中包含了cj演算法 確保每個類被呼叫一次 具...