繁体   English   中英

更改 class 电平变量的参考

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM