编程语言
首页 > 编程语言> > Python类变量问题

Python类变量问题

作者:互联网

我对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,class-variables
来源: https://codeday.me/bug/20190606/1190788.html