静态变量
类是一个抽象,对象是一个实体,指具体的某一个。
在类中的静态变量。与普通的成员变量不同,静态类成员与具体的对象没有关系,而是只属于定义他们的类。
静态变量(类变量)属于类,不属于 某个具体的对象
静态变量(类变量)属于类,不属于 某个具体的对象
静态变量(类变量)属于类,不属于 某个具体的对象

全局变量定义在整个程序所有函数外头定义的变量
静态变量(类变量)定义在class中,但不在任何一个函数中
实例变量在类中的函数中,带有前缀self
实例变量在类中的函数中,带有前缀self
实例变量在类中的函数中,带有前缀self
局部变量在类中的函数中,没有任何前缀,只能在它的函数中使用

class test:
    cls = "222" #类变量
    a = "aaa"   #类变量
    def output(self):
        self.b = "9999"
        print(self.a) #此时会先查找是否有实例变量a,如果没有就会类中查找是否有类变量a
        print(id(test.a))  ####
        print(id(self.a))  ####
        self.a = 3  #赋值,创建一个实例变量a
        print(self.a) #此时输出实例变量3
        print(test.a) #此时输出类变量aaa
        print(id(test.a)) ####
        print(id(self.a)) ####
        self.cls = "555" #实例变量
        put = "00" #局部变量,只能在output函数中使用
        print(test.cls)
        print(self.cls)

t = test()
t.output()
print(t.cls)#用对象名访问实例变量
print(t.b)  #用对象名访问实例变量
print(test.cls) #用类名访问类变量

输出

aaa
2430409712392
2430409712392
3
aaa
2430409712392
140732695045008
222
555
555
9999
222

在类的函数中self后如果跟的类变量名,则会先在在实例变量中查找是否有,如果没有,就去类变量中查找,并且类变量的值只能通过类名为前缀时才能改
在类的函数中self后如果跟的类变量名,则会先在在实例变量中查找是否有,如果没有,就去类变量中查找,并且类变量的值只能通过类名为前缀时才能改
在类的函数中self后如果跟的类变量名,则会先在在实例变量中查找是否有,如果没有,就去类变量中查找,并且类变量的值只能通过类名为前缀时才能改

在对象中用对象名为前缀访问实例变量,用类名为前缀访问类变量