我在學習this和this以瞭解類屬性。但與以下代碼片段的輸出混淆。Python類中的類屬性shadowing
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
Python解釋器: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