これらの 2 つのクラス定義は同じように構造化されていますが、bright() クラス定義では属性 'd' がリストであり、normal() クラス定義では int です。奇妙な()クラスがself.d = dになる理由がわかりませんが、クラスnormal()には当てはまりません。この状況で Python が int と list を別々に扱うのはなぜですか?
class weird:
def __init__(self):
d = [1,2,3]
self.d = d
for x in range(3):
d[x] = 10+x
print "d =", d
print "self.d =", self.d
class normal:
def __init__(self):
d = 1
self.d = d
d = 11
print "d =", d
print "self.d =", self.d
コードを実行すると、
>>> a=weird()
d = [10, 11, 12]
self.d = [10, 11, 12]
>>> b=normal()
d = 11
self.d = 1