为什么更新类属性不会更新该类的所有实例?

2023-12-01

假设我有以下课程:

class A:
    arr = []

如果我附加到arr举个例子A,所有实例A已更新。

>>> a1, a2 = A(), A()
>>> a1.arr.append(0)
>>> a1.arr
[0]
>>> a2.arr
[0]
>>> A.arr
[0]

但是,如果我设置arr为实例的数组文字A,其他情况是not更新:

>>> a1.arr = [1,2,3]
>>> a1.arr
[1, 2, 3]
>>> a2.arr
[0]
>>> A.arr
[0]

为什么会出现这种情况?当class属性是一个列表时,为什么之间的结果不同append and =?

当类属性不是数组时,我还注意到类似的行为:

class B:
    value = ''
>>> b1, b2 = B(), B()
>>> b1.value = 'hello'
>>> b1.value
'hello'
>>> b2.value
''
>>> B.value
''
>>> B.value = 'goodbye'
>>> b1.value
'hello'
>>> b2.value
'goodbye'
>>> B.value
'goodbye'

当类属性是字符串时,为什么行为看起来不同?什么时候b1的值已经设置了,为什么B.value = ...只更新b2的值而不是b1's?


您对类属性和实例属性的处理感到困惑。实例属性将default到类属性。但是,当您专门更改实例时,您会创建一个实例属性。让我们来看看 B 类的序列:

class B:
    value = ''
# You have a single attribute, `B.value`

b1, b2 = B(), B()
b1.value = 'hello'
# This shadows b1's reference to B.value,
# inserting a local reference to its own attribute of the same name.
# You can check this with the id() function

b2.value   # this still refers to the class attribute.

从这里看清楚了吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么更新类属性不会更新该类的所有实例? 的相关文章

  • Django:模拟模型上的字段

    如何将模拟对象分配给该模型上的用户字段 无论如何都要绕过 SomeModel user 必须是 User 实例 检查吗 class SomeModel models Model user models ForeignKey User 我不会
  • 如何使用 pyinstaller 包含文件?

    我也使用 tkinter 使用 python 3 7 编写了一个程序 由于我使用的是外部图片 因此当我将所有内容编译为一个 exe 时 我需要包含它们 我试过做 add data bg png files 但我仍然收到此错误 tkinter
  • 即使页面未完全加载,我们也可以使用 Selenium 获取页面源吗(TimeoutException: Message: timeout)?

    即使遇到 TimeoutException Message timeout 也能获取页面源码吗 当我调用 driver page source 时 有时无法加载整页 但我只需要它的部分信息 尚未确定 所以我只想在任何情况下保存页面 是否可以
  • 从Python中的字符串中提取货币金额

    我正在制作一个程序 从字符串中获取货币并将其转换为其他货币 例如 如果字符串是 the car cost me 13 250 我需要得到 and 13250 我已经有了这个正则表达式 1 确实如此 但是该字符串很有可能有多个价格 并且全部使
  • Python有条件求解时滞微分方程

    我在用dde23 of pydelay包来求解延迟微分方程 我的问题 如何有条件地编写方程 例如目标方程有两个选项 when x gt 1 dx dt 0 25 x t tau 1 0 pow x t tau 10 0 0 1 x othe
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • 为什么我的代码不能根据字典解码加密字符串?

    我有一本字典 其中包含代表字母的键和值 例如一个简单的 DICT CODE b g n a p o x d t y 我收到了一个加密代码 并将该字符串转换为一个列表 其中每个项目都是一个单词 我需要根据字典中的项目来解决它 代码示例是 wo
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 更改 Altair 中的构面标题位置?

    如何将方面标题 在本例中为年份 移动到每个图的上方 默认值似乎位于图表的一侧 这可以轻易改变吗 import altair as alt from vega datasets import data df data seattle weat
  • python是带有字符串的运算符行为[重复]

    这个问题在这里已经有答案了 我无法理解以下行为 我正在创建 2 个字符串 并使用 is 运算符来比较它 对于第一种情况 它的工作方式有所不同 对于第二种情况 它按预期工作 当我使用逗号或空格时 它显示是什么原因False与比较is当没有使用
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • Pandas 滚动窗口 Spearman 相关性

    我想使用滚动窗口计算 DataFrame 两列之间的 Spearman 和 或 Pearson 相关性 我努力了df corr df col1 rolling P corr df col2 P为窗口尺寸 但我似乎无法定义该方法 添加meth
  • Python多处理错误“ForkAwareLocal”对象没有属性“连接”

    下面是我的代码 我面临着多处理问题 我看到这个问题之前已经被问过 我已经尝试过这些解决方案 但它似乎不起作用 有人可以帮我吗 from multiprocessing import Pool Manager Class X def init
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • 乘以行并按单元格值附加到数据框

    考虑以下数据框 df pd DataFrame X a b c d Y a b d e Z a b c d 1 2 1 3 df 我想在 列中附加数字大于 1 的行 并在该行中的数字减 1 df 最好应该 然后看起来像这样 或者它可能看起来
  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • 使用 numpy 在 python 中执行最大方差旋转

    我正在研究矩阵的主成分分析 我已经找到了如下所示的组件矩阵 A np array 0 73465832 0 24819766 0 32045055 0 3728976 0 58628043 0 63433607 0 72617152 0 5
  • Python]将两个文本文件合并为一个(逐行)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是蟒蛇新手 我想做的是将文件 a 和文件 b 逐行合并到一个文件中 例如 text file a a n b n c text fi
  • 无法在 python 3.8 上将带有 webapp 的 python 部署到 azure

    我正在尝试使用部署一个测试项目Flask使用以下方法将框架迁移到 Azure 云中Azure CLI https learn microsoft com en us azure app service containers quicksta

随机推荐

  • 如何从 Xcode 中的 uipicker 获取所选时区的日期和时间

    我正在尝试在标签或文本字段中显示 uipicker 中选定时区的日期和时间 但我没有任何方法来解决此问题 所以请任何人帮助我 提前致谢 SelectedTimeZone 权重objectAtIndex pickerView selected
  • 为所有视图提供额外的上下文

    我正在使用 django 为我的团队构建一个项目管理网站 我的基本模板包括一个侧边栏菜单 其中包含所有项目和用户的列表 链接到DetailView分别针对该用户或项目 我的问题是我需要提供User and Project模型到每个视图 以便
  • 子边距为父边距添加边距

    如果我有以下代码怎么办 HTML section class home section section class main h1 Hello h1 section CSS代码 html body height 100 width 100
  • Freemarker/Velocity - 日期操作

    我对这两个模板引擎有一个相当简单的问题 我正在尝试确定一个未来 过去的日期 从现在开始的固定时间 例如18个月前 或者明天 我知道可以使用velocity freemarker模板中的java日期对象来做到这一点 类似于 date add
  • 如何在 C# 中将 lambda 表达式作为参数传递

    我是使用 lambda 表达式的初学者 我有一个经销商名单 我必须为每个经销商计算等级 要求是将等级计算分成单独的方法 所以我正在编写以下两个方法 但是我无法将参数传递给CalculateGrade method public IEnume
  • 如何制作 Parse.Query.AND?

    我需要用 and 连接 Parse com 中的 2 个查询 我的代码是 var queryDeseo1 new Parse Query DeseosModel queryDeseo1 equalTo User Parse User cur
  • 使用“order”属性在同级之间定位弹性项目

    我有一个包含一到三个弹性项目的弹性盒 正确的布局应该是这样的 div div h2 h2 div div 在包含的弹性框中 我有代码可以完成这项工作 请参阅this 仅当布局顺序保持不变时 我的问题是 如何有办法确保 如果标记并不总是按该顺
  • 如何在RecyclerView和ViewPager上解决捕捉功能时获取即将选择的页面

    背景 ViewPager在执行一些滚动后捕捉到视图 因此可以RecyclerView 如果你使用这样的东西 LinearSnapHelper attachToRecyclerView recyclerView 或者通过使用库捕捉到某个边缘
  • 负载平衡、AJAX 和您

    如果您是 Asp Net MVC 环境中的异步 javascript 调用 并且必须使用循环方式的负载均衡器 您能找到回家的路吗 编辑 添加说明 使用内存中会话状态 我会使用粘性会话配置负载均衡器以避免此问题 通过粘性会话 您将在会话期间一
  • 首次加载时显示的 Azure AD B2C 自定义 UI 错误标签

    我有一个 Azure AD B2C 租户 我创建了一个 默认 SignUpAndSignInPolicy 并为登录页面 注册页面和重置密码页面添加了自定义 UI 模板 一切正常 除了在注册页面和重置密码页面上 表单输入字段在初始加载时始终标
  • 合并所有其他数组 php

    数组一 1 3 5 7数组二 2 4 6 8 我想要的数组是1 2 3 4 5 6 7 8 我只是用数字作为例子 如果只是数字 我可以合并和排序 但它们将是单词 所以也许像 数组一 bob a awesome 数组二 is really d
  • 从 .NET 连接到 LDAP 服务器

    我被推荐使用System DirectoryServices Protocols能够支持连接到 Active Directory 以外的 LDAP 服务器here 不幸的是 我无法正确搜索该目录 我希望能够获得用户的某个属性 例如mail
  • 如何以编程方式启用服务菜单,而无需用户注销,然后在键盘首选项中启用它?

    正如标题所言 请大家帮忙 您需要在每个服务的字典中包含 NSRequiredContext 键 文档没有提到这一点 但从 Mac OS X 10 6 开始是必需的 如您所见 如果您没有服务 默认情况下您的服务将被禁用 您还应该致电the N
  • 实体框架。需要帮助过滤结果

    需要在实体框架中选择数据 但需要对子孙进行过滤 我有4张桌子 Parent gt Child gt GrandChild gt GreatGrandChild我想返回所有的父母 但过滤掉孩子和曾孙 换句话说 例如 SELECT Parent
  • 如何专门化枚举和特定类型的模板函数?

    我目前有一个功能 template
  • 如何禁用元素上的所有样式?有什么属性可以一次性将元素的所有属性设置为无?

    我在我的页面中嵌入了 telerik 的 radEditor 它从母版页继承了 css 属性 就像 H2 是蓝色的 它有背景颜色 我应该在我的自定义 css 类 专门为 radEditor 制作的类 中输入什么 以便它覆盖所有母版页的 cs
  • 带有express.js的静态文件

    我想服务index html and media子目录作为静态文件 索引文件应同时提供于 index html and URLs I have web server use media express static dirname medi
  • WooCommerce 基于动态最低订单金额的费用

    我需要在购物车中设置最低订单费用 因此如果购物车中的产品总计不超过 10 英镑 则需要支付额外费用才能将价格提高到 10 英镑 这是我目前拥有的代码 该代码在购物车阶段运行良好 但是当您到达结帐时 定价部分由于某种原因不会停止加载 并且您无
  • utf8 表示为普通文本

    text xd0 xa2 xd0 xb0 xd0 xb9 xd0 xbd xd0 xb0 text iconv UTF 8 UTF 8 IGNORE text var dump text good text file get content
  • 为什么更新类属性不会更新该类的所有实例?

    假设我有以下课程 class A arr 如果我附加到arr举个例子A 所有实例A已更新 gt gt gt a1 a2 A A gt gt gt a1 arr append 0 gt gt gt a1 arr 0 gt gt gt a2 a