这两个类定义的结构相同,除了在奇怪的()类定义中,属性“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