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
很明显,我不明白类变量如何与 += 一起使用。我究竟做错了什么?
解决方案
这是一个可变性问题。如果你0
用 a替换 your[]
并开始附加它,你会得到你期望的结果。但是你不能改变一个数字,你只能用另一个替换它。尽管
self.my_num = self.ctr
实际上是否保存了对下一行self.my_num
和的相同引用self.ctr
self.ctr += 1
self.ctr
用新的(增加的)值替换s 引用。
推荐阅读
- typescript - 如何在 Google Cloud Firestore 中删除子集合项
- shell - 如何在 unix 中按修改后的时间戳对文件进行排序,以便 shellscript 一次选择一个
- java - 如何使用 Jsoup 登录网站进行网页抓取
- javascript - Javascript - 无法访问从 csv 文件创建的数组的数组元素
- python - 如何在 odo o 11 中隐藏报表中的创建和编辑按钮?
- javascript - 如何在 Vuetify 组件中以编程方式设置组件属性
- c# - 插入方法有效,但 GET 方法无效
- c# - 将 C# 枚举公开为数据库中的视图
- java - 如何从Java文件中获取变量名列表?
- php - 如何设置仅以用户正在使用的当前语言为国家/地区显示的产品费用