[英]Change reference of class level variable
我们有一个 class:
class Parent:
A = 1
def print_a(self):
print(Parent.A)
我想创建另一个 class 继承第一个并更改 class 变量:
class Child(Parent):
A = 2
现在,当我执行时:
example = Child()
example.print_a()
它打印“1”。
如何更改子 class 中 class 变量 A 的引用(在 print_a 函数中)? 我不想复制整个 print_a function 替换 Parent.A。
重要的是,在这种情况下,我无法编辑父 class。
你必须使用 @classmethod 装饰器
这应该按预期工作:
class Parent:
A = 1
@classmethod
def print_a(cls):
print(cls.A)
class Child(Parent):
A = 2
if __name__ == '__main__':
Child.print_a()
e = Child()
e.print_a()
# Child.A is not inherited from parent
Parent.print_a()
output:
2
2
1
如果要在父项中设置变量:
class Child(Parent):
Parent.A = 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.