类的属性访问特性

重点

python中实例访问属性的顺序为:先查找同名的实例属性并返回值,如果找不到就会查找同名的类属性并返回值。

class MyClass(object):
	name = 'default'
	
	def __init__():
		self.age = 18

if __name__ == '__main__':
	c = MyClass()
	# 访问的是类属性 等同于 c.__class__.name
	c.name
	# 需要注意这是动态创建实例属性
	c.name = 'ww'
	print(c.name)
	print(c.__class__.name)
	# 结果不同分别是 ww 和 default 

小结

由于类的访问顺序问题,我们需要特别注意实例在访问属性时,尽力避免实例对类属性的直接访问,尤其是赋值,因为赋值是属于创建类属性同名的实例属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值