[英]Using ParentClass.method(self, *args, **kwargs) or super(MyClass, self).method(*args, **kwargs)
當一個類有一個繼承自單個類的類時,調用父方法的首選方法是什么? 我知道有兩種方法可以調用父方法。
選項1:
ParentClass.method(self, *args, **kwargs)
選項2:
super(MyClass, self).method(*args, **kwargs)
在處理多重繼承時,選項1似乎確實很有意義; 我們想要專門調用某個類的方法。 但是在處理單繼承時,無論哪種方式都有效,但選項1可能更加安全。 但有什么(比如PEP)說什么時候使用哪種風格?
首先,如果你有舊式的課程,你需要使用選項1 。
如果沒有,則取決於代碼:
super
(或沒有),您可以安全地使用超級。 這也意味着你的subclsses 必須使用super
而不是Parent.method(self, ...)
。 Parent.method(self, ...)
,也可以使用它。 在http://fuhm.net/super-harmful/上有一個很好的,更冗長的解釋。 簡短摘要(甚至比我上面的解釋還要短):
- 如果超類必須使用super,則子類必須使用super
- 超類必須使用super,如果他們的子類做(有時)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.