클래스 속성을 이해하기 위해 this과 this을 배우고있었습니다. 그러나 다음 코드 스 니펫의 결과와 혼동을 느낍니다.파이썬 클래스의 클래스 속성 음영
class A:
aliases = None
name = None
def __init__(self,name):
self.name = name
self.aliases = set([name])
def add_aliases(self,a):
self.aliases.add(a)
def __repr__(self):
return str(self.name) + str(self.aliases)
arr = []
for i in range(3):
arr.append(A(i))
arr[-1].add_aliases(i+1)
for item in arr:
print item
A.aliases = set([]) ##Modify the static element of class
for item in arr:
print item
파이썬 인터프리터 : 2.7.9
그리고 출력은
0set([0, 1])
1set([1, 2])
2set([2, 3])
0set([0, 1])
1set([1, 2])
2set([2, 3])
내가 출력으로 이런 일을 예상하고 있었다.
0set([2, 3])
1set([2, 3])
2set([2, 3])
0set([])
1set([])
2set([])
이 질문은 '코드를 이해하기 쉽도록 클래스 이름별로 클래스 속성을 항상 참조하도록 제안하려고합니다.' – gjha
당신은 내가 원래 게시물에 준 대답을보고 싶을 수도 있습니다. – Shasha99