Python 类变量问题

标签 python class-variables

我对python的类变量有些疑惑。据我了解,如果我定义一个在 __init__() 函数外声明的类变量,则该变量将仅作为 C++ 中的静态变量创建一次。

这对于某些 python 类型似乎是正确的,例如 dict 和 list 类型,但对于那些基本类型,例如int,float, 是不一样的。

例如:

class A:
    dict1={}
    list1=list()
    int1=3

    def add_stuff(self, k, v):
        self.dict1[k]=v
        self.list1.append(k)
        self.int1=k

    def print_stuff(self):
        print self.dict1,self.list1,self.int1

a1 = A()
a1.add_stuff(1, 2)
a1.print_stuff()
a2=A()
a2.print_stuff()

输出是:

{1: 2} [1] 1
{1: 2} [1] 3

我理解 dict1 和 list1 的结果,但为什么 int1 的行为不同?

最佳答案

不同之处在于您永远不会分配给 self.dict1self.list1 — 您只会从类中读取这些字段 — 而您确实分配给 self.int1,从而创建一个隐藏类字段的实例字段。

关于Python 类变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865538/

相关文章:

python - 仅将字符串拆分为两部分

delphi - "class var"是否初始化为零?

ruby - 在类 << self 中使用 attr_accessor 的类变量

python - 我可以从 python 类中删除继承的嵌套类吗?

java - 使用类作为变量标识符?

ruby - ruby 中的常量或类变量?

python - Bokeh hexbin - 找到每个六边形的原始索引

python - 在时间序列数据框中选择一小时的数据

python - 使用 scipy.stats 和 statsmodels 计算线性回归时的不同结果

python - 尝试使用 python 在 xlwt 中设置单元格颜色时丢失属性错误