YuQ*_*ang 4 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()
Run Code Online (Sandbox Code Playgroud)
输出是:
{1: 2} [1] 1
{1: 2} [1] 3
Run Code Online (Sandbox Code Playgroud)
我理解dict1和list1的结果,但为什么int1行为不同?
不同之处在于您永远不会分配self.dict1或self.list1- 您只是从类中读取这些字段 - 而您确实分配了这些字段self.int1,从而创建了一个隐藏类字段的实例字段.