回答
不要使用staticmethod
class Foo():
var = "Foo"
@staticmethod
def print_var():
print(Foo.var)
class Bar(Foo):
var = "Bar"
>> Bar.print_var()
>> "Bar
上面的代碼打印 「富」。 至少,使用@classmethod
decorator這裏:
class Foo():
var = "Foo"
@classmethod
def print_var(cls):
print(cls.var)
class Bar(Foo):
var = "Bar"
這使得print_var
的類訪問,但被傳遞到當前類的引用,因此您可以在「正確」的對象上查找var
。
僅當您想要從方法中刪除所有上下文並再次將其轉換爲常規函數時才使用staticmethod
。
演示:
>>> class Foo():
... var = "Foo"
... @classmethod
... def print_var(cls):
... print(cls.var)
...
>>> class Bar(Foo):
... var = "Bar"
...
>>> Bar.print_var()
Bar
>>> Foo.print_var()
Foo
揍我吧,你在'classmethod'中犯了一個錯字# –
謝謝!兩者之間的界限對我來說有點模糊。 – SverkerSbrg
@JamieCockburn:是的,自從糾正之後。 :-) –
使用classmethod
:
class Foo():
@classmethod
def print_var(cls):
print(cls.var)
- 1. 父類的方法如何訪問子類的重寫變量?
- 2. 父類引用訪問父類變量的子類對象
- 3. AS3訪問父類的變量從子
- 4. 從子類訪問父級的私有實例變量?
- 5. 如何訪問從父類擴展的子類中的變量
- 6. 從父文件訪問子類變量
- 7. 如何訪問子類中的父類整數變量?
- 8. 訪問子類中的基類變量
- 9. 如何在父類中訪問子類變量?
- 10. PHP訪問父類變量
- 11. 從父類訪問變量
- 12. 如何訪問父類中的變量
- 13. Java:父類訪問子類的靜態變量的方法?
- 14. 子類無法訪問父類的變量
- 15. Java:重寫父類的靜態變量?
- 16. 是否有可能在java中的父類中訪問子類的變量?
- 17. AS3訪問子類的超類變量
- 18. 訪問主類變量的C++子類
- 19. 如何訪問子方法內的子類中的父類變量?
- 20. 訪問父類的方法和變量
- 21. 父級抽象類中的變量是否由子類繼承?
- 22. 從子類訪問父類
- 23. 在父類中獲取子類變量
- 24. 在父類中讀取子類變量
- 25. Python - 在調用類方法時從父類訪問子類的變量
- 26. 在Python中用作類級別變量時的訪問類
- 27. 訪問ArrayList中的子類變量?
- 28. 子類中的實例變量訪問
- 29. 從qt中的子類訪問父變量
- 30. 在子類中訪問私有變量
爲什麼要使用然後用靜態方法? –
我想在不創建實例的情況下訪問它。這是一個壞方法嗎? 我試圖幹起一些代碼 – SverkerSbrg