[英]Access overridden class variable in parent of subclass
如何訪問我希望替換子類的類變量?
這是我要實現的目標:
class Foo():
var = "Foo"
@staticmethod
def print_var():
print(Foo.var)
class Bar(Foo):
var = "Bar"
>> Bar.print_var()
>> "Bar
上面的代碼顯示“ Foo”而不是“ Bar”
不要使用staticmethod
。 至少在這里使用@classmethod
裝飾器 :
class Foo():
var = "Foo"
@classmethod
def print_var(cls):
print(cls.var)
class Bar(Foo):
var = "Bar"
這使得在print_var
可以訪問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
:
class Foo():
@classmethod
def print_var(cls):
print(cls.var)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.