【问题标题】:Are Class variables mutable? [duplicate]类变量是可变的吗? [复制]
【发布时间】:2017-11-17 17:11:01
【问题描述】:

如果我定义一个简单的类

class someClass():
    var = 1

x = someClass()
someClass.var = 2

这将使x.var 等于 2。这令人困惑,因为通常 类似于这样的东西:

a = 1
b = a
a = 2

将 b 原封不动地保留为 b==1。那么为什么这与类变量不同呢?区别在哪里?可以调用所有类变量可变吗? 在某种程度上,类变量的工作方式更像是为a=[1] 分配一个列表并执行a[0]=2

基本上问题是x.var 如何访问 someClass.var 它必须是不同的,然后在 python 中设置两个变量时使用。发生了什么?

【问题讨论】:

  • 现在设置x.var = 3,看看someClass.var会发生什么
  • 我知道,但这不是重点
  • 不,这的重点。本质上,当你这样做时,SomeClass.varsomeInstance.var 不一定是同一件事
  • 这根本不是关于 someClass.var = 2 更改 x.var 以及与 python 中变量的正常功能相比 x.var 如何绑定到类变量的事实
  • 一张图抵千言:stackoverflow.com/a/34126204/476

标签: python class oop object static


【解决方案1】:

varsomeClass的静态类变量。

当您获取x.vary.varsome_other_instance.var 时,您访问的是同一个变量,而不是实例派生变量(只要您没有将它作为属性专门分配给实例)。

【讨论】:

  • 那么当我使用 x.var = 2 时,我基本上会在 x 中创建一个新变量,在这个实例中隐藏 someClass 中的变量?
  • @pindakaas 宾果游戏!
猜你喜欢
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 2019-12-29
相关资源
最近更新 更多