python中用类和用对象调用类变量的区别

本文详细解析了静态变量(类变量)与实例变量之间的区别,通过代码示例展示了如何在Python中定义和访问类变量,以及当通过对象名调用类变量时,查找机制是如何工作的。

静态变量(类变量)定义在class中,但不在任何一个函数中。
类变量是属于类的,不属于任何一个对象。
类变量是属于类的,不属于任何一个对象。
类变量是属于类的,不属于任何一个对象。
在用对象名调用类变量时,会先从对象中查找,如果没有再从类中查找。
在用对象名调用类变量时,会先从对象中查找,如果没有再从类中查找。
在用对象名调用类变量时,会先从对象中查找,如果没有再从类中查找。

class test:
    vv = 0
    def __init__(self):
        test.vv += 1
        print("id(test.vv)\t", id(test.vv)) #用类名调用的地址
        print("在类中test.vv\t",test.vv,"\n")


t1 = test()
print(id(t1.vv))    #用对象调用,此时因对象中没有,所以是在类查找
t1.vv = 10  		#用对象名调用vv变量赋值,此时新建了一个对象的vv变量
print(id(t1.vv))	#对对象的vv变量赋值后,不再去类中查找
print(id(test.vv))
print("t1.vv\t",t1.vv)
print("test.vv\t",test.vv)

输出

id(test.vv)	 140732696879952
在类中test.vv	 1 

140732696879952
140732696880240
140732696879952
t1.vv	 10
test.vv	 1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值