我对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.dict1
或 self.list1
— 您只会从类中读取这些字段 — 而您确实分配给 self.int1
,从而创建一个隐藏类字段的实例字段。
关于Python 类变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865538/