python实例属性与类属性_Python类属性与实例属性理解

按理讲,类属性改变,类的实例对象这个属性也应该被改变,但是在python中实际却不是这样

classtest():

name= 111a=test()

b=test()

a.name= 222test.name= 333

print(a.name,b.name,test.name)

输出:222 333 333

这里a.name的值没有被test.name = 333改变

查看属性在内存中的位置

print(id(a.name))print(id(b.name))print(id(test.name))

输出:140705896729248

2154539206672

2154539206672

再查看对象的属性

print(a.__dict__)print(b.__dict__)print(test.__dict__)

{'name': 222}

{}

{...'name': 333.....}

所以当操作a对象给name属性赋值时,创建了a的name属性,可以理解为这个name已经不是类的属性而是a对象的属性了(好绕)

b没有创建,所以当查询b.name的时候实际是查的test.name(内存位置相同)

所以类属性与实例属性查询的优先级为: 实例属性>类属性 实例属性没有是会去查类属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值