这两个类别有何不同?
class A(): x=3 class B(): def __init__(self): self.x=3
有什么明显的区别吗?
A.x是一个 类变量 。 B的self.x是一个 实例变量 。
A.x
B
self.x
即A的x被实例之间共享。
A
x
用可以像列表这样修改的东西更容易证明区别:
#!/usr/bin/env python class A: x = [] def add(self): self.x.append(1) class B: def __init__(self): self.x = [] def add(self): self.x.append(1) x = A() y = A() x.add() y.add() print("A's x:", x.x) x = B() y = B() x.add() y.add() print("B's x:", x.x)
输出量
A's x: [1, 1] B's x: [1]