+=运算符在类Variab上的作用与我期望的不同

2024-06-16 11:08:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个密码:

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: self密码initmydefnumclassd2
1条回答
网友
1楼 · 发布于 2024-06-16 11:08:02

这是一个易变性问题。如果用[]替换0并开始附加到它,您将得到预期的结果。但是你不能改变一个数字,你只能用另一个来代替它。而

self.my_num = self.ctr

实际上,是否保存了对self.my_numself.ctr的相同引用,即下一行

self.ctr += 1

用新的(递增的)值替换self.ctr的引用。你知道吗

相关问题 更多 >