为什么Python中的继承对int和list类变量的处理方式不同?

有人可以向我解释为什么以下代码将类变量n和行区别对待,以及如何使行的行为与n相同吗?预先感谢!

class A():
    n = 0
    lines = []

    @classmethod
    def Add(cls,line):
        cls.n += 1
        cls.lines.append(line)

class B(A):
    pass

class C(A):
    pass

B.Add('hello')
C.Add('world')

print(B.lines,B.n)
print(C.lines,C.n)

输出为:

['hello','world'] 1

['hello','world'] 1

即对于子类,变量n是单独的,而对于行,则不是。在适用于Windows 10的Python 3.7.4上运行。

编辑:如果可以的话,我想在父类中保留行的实现。我知道我可以在子类中重新声明行以获得我想要的行为。

wing_wx 回答:为什么Python中的继承对int和list类变量的处理方式不同?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2320137.html

大家都在问