我不明白以下示例中的差异。有一次,一个类的实例可以改变另一个实例的类变量,而另一次它不能?类变量:“class list”vs“class boolean”
实施例1:
class MyClass(object):
mylist = []
def add(self):
self.mylist.append(1)
x = MyClass()
y = MyClass()
x.add()
print "x's mylist: ",x.mylist
print "y's mylist: ",y.mylist
输出:
X的MYLIST:[1]
ÿ的MYLIST:[1]
因此,这里的实例x
的类A
能够访问和修改类属性e mylist
,这也是A
的实例y
的属性。
例2:
class MyBank(object):
crisis = False
def bankrupt(self) :
self.crisis = True
bankX = MyBank()
bankY = MyBank()
bankX.bankrupt()
print "bankX's crisis: ",bankX.crisis
print "bankY's crisis: ",bankY.crisis
bankX的危机:真
bankY的危机:假
为什么这不是在这个例子中工作?
这是相同的旧的“可变与不变”的问题,我们得到了一天(加上第二个原因的5倍,为什么它不以这种方式工作),它会得到5 upvotes,因为它涉及类?恭喜,我对SO社区失去了所有的信心。 –
myList是类变量并且是可变的 – FujiApple
请参阅[python文档](https://docs.python.org/3.5/tutorial/classes.html#class-and-instance-variables),它具有几乎完全相同的示例。 –