我有这个密码:
class Doh:
ctr = 0;
def __init__(self):
self.my_num = self.ctr
self.ctr += 1
d1 = Doh()
d2 = Doh()
print(f"d1: {d1.my_num}")
print(f"d2: {d2.my_num}")
我运行它时希望d1和d2对self.my_num
有不同的值,但它们的结果都是0:
d1: 0
d2: 0
所以很明显,我不明白类变量如何与+=。我做错什么了?你知道吗
Tags:
这是一个易变性问题。如果用
[]
替换0
并开始附加到它,您将得到预期的结果。但是你不能改变一个数字,你只能用另一个来代替它。而实际上,是否保存了对
self.my_num
和self.ctr
的相同引用,即下一行用新的(递增的)值替换
self.ctr
的引用。你知道吗相关问题 更多 >
编程相关推荐