我对python的类变量有些怀疑。作为我的理解,如果我定义了一个类变量,它被声明在^ {CD1> }函数之外,这个变量将只作为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()
输出为:
^{pr2}$我理解dict1和list1的结果,但是为什么int1的行为不同呢?在
不同之处在于,您从未赋值给
self.dict1
或self.list1
——您只从类中读取这些字段——而您确实分配给self.int1
,从而创建了一个隐藏类字段的实例字段。在相关问题 更多 >
编程相关推荐