[英]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.