python - 为什么我的类的变量对于每个对象都不是唯一的?
问题描述
为什么对象b
具有相同的变量a
而不是唯一的变量?
class FOO:
def __init__(self):
FOO.x = [3, 1]
self.y = [9, 4]
def g(self):
FOO.x[1] = FOO.x[1] + 7
self.y *= 2
return FOO.x + self.y
a, b = FOO(), FOO()
print(a.g())
print(a.g())
print(b.g())
为什么我会得到这个输出:
[3, 8, 9, 4, 9, 4]
[3, 15, 9, 4, 9, 4, 9, 4, 9, 4]
[3、22、9、4、9、4]
而不是这个?
[3, 8, 9, 4, 9, 4]
[3, 15, 9, 4, 9, 4, 9, 4, 9, 4]
[3, 8, 9, 4, 9, 4]
每个对象不是独一无二的吗?
解决方案
该FOO.x
变量属于 FOO 类,而不是每个实例。因此,当您添加7
to时FOO[1]
,您正在更改所有对象实例的值。
推荐阅读
- linux - 运行第一个 shellscript 的问题
- jquery - 如何使用函数而不是内联 onclick 提交值?
- flutter - 如何从 Flutter 的堆栈中删除孩子?
- shopware - 使用插件 Shopware 在菜单中自定义项目
- excel - 运行时错误 1004:方法“选择 object_worksheet 失败
- python - 使用 apply() 合并 Pandas DataFrame 以仅合并两列中的部分匹配
- grafana - 使用 CASE 或 IF 语句查询 InfluxDB?
- javascript - 如何创建一个函数来从嵌套对象中检索所有孩子的 id
- mercurial - 如何在 Mercurial 中列出某个用户启动的分支?
- amazon-web-services - S3 存储桶策略允许(IAM 用户和 VPC)或管理控制台通过用户/角色进行访问