다음 예제의 차이점을 이해할 수 없습니다. 한 번 클래스의 인스턴스는 다른 인스턴스의 클래스 변수를 변경할 수 있으며 다른 시간은 변경할 수 없습니다.클래스 변수 : "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]
Y의 myList에 [1] 그래서 여기
인스턴스 x
의 A
클래스가 클래스 속성에 액세스하여 수정할 수있었습니다. e mylist
또한 인스턴스 y
의 속성 인 A
입니다.
예 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의 위기 : 거짓
이유는이 예제에서 작동하지 않는 이유는 무엇입니까?
속성이 인스턴스에 설정되어def bankrupt(self) :
self.crisis = True # self.crisis = something
, 그것은 항상 설정됩니다 할당이
def add(self):
self.mylist.append(1) # NOT self.mylist = something
초 경우 : 첫 번째 경우에
이 질문 "불변 대 가변"같은 오래된 그렇지 않은 이유를 우리는 하루에 5 번 (플러스 2 이유를 얻을 그런 식으로) 그리고 클래스를 포함하기 때문에 그것은 단지 5 upvotes를 얻을 수 있습니까? 축하합니다. 저는 방금 SO 커뮤니티에서 모든 믿음을 잃었습니다. –
myList가 클래스 변수이고 변경할 수 있습니다 – FujiApple
거의 동일한 예제가있는 [python documentation] (https://docs.python.org/3.5/tutorial/classes.html#class-and-instance-variables)을 참조하십시오. –