静态变量
类是一个抽象,对象是一个实体,指具体的某一个。
在类中的静态变量。与普通的成员变量不同,静态类成员与具体的对象没有关系,而是只属于定义他们的类。
静态变量(类变量)属于类,不属于 某个具体的对象
静态变量(类变量)属于类,不属于 某个具体的对象
静态变量(类变量)属于类,不属于 某个具体的对象
全局变量定义在整个程序所有函数外头定义的变量
静态变量(类变量)定义在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后如果跟的类变量名,则会先在在实例变量中查找是否有,如果没有,就去类变量中查找,并且类变量的值只能通过类名为前缀时才能改
在对象中用对象名为前缀访问实例变量,用类名为前缀访问类变量