有人可以向我解释为什么以下代码将类变量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上运行。
编辑:如果可以的话,我想在父类中保留行的实现。我知道我可以在子类中重新声明行以获得我想要的行为。