失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python的实例类方法 修饰器类方法 修饰器保护方法 修饰器静态方法中私有属性的区别

python的实例类方法 修饰器类方法 修饰器保护方法 修饰器静态方法中私有属性的区别

时间:2022-11-08 12:47:33

相关推荐

python的实例类方法 修饰器类方法 修饰器保护方法 修饰器静态方法中私有属性的区别

class Cla:__count=0def __init__(self,v):self.__value=vCla.__count+=1def show(self):print('普通实例方法访问私有属性:',self.__value,Cla.__count)@classmethod def classShow(cls):print('修饰器类方法访问私有属性:',cls.__count)@propertydef value(self):print('修饰器保护方法:',self.__value)@staticmethoddef staticShow():print('修饰器静态方法访问私有属性:',Cla.__count)cla=Cla(5)cla.show()cla.classShow()cla.staticShow()print()cla2=Cla(10)cla2.show()cla2.classShow()cla2.staticShow()print()Cla.show(cla)Cla.classShow()Cla.staticShow()print()cla.value#cla.value=99#del cla.value

第三段是通过类名调用类方法。

可以发现,实例cla和实例cla2调用类构造方法的私有属性__value相互独立,类私有属性__count实例共用。

修饰器类方法参数cls与类名相同。

cla.value=99

del cla.value

增加两行代码测试后,发现修饰器保护方法可读不可写,也不可删除。

如下修改可自定义property的读写方法:

class Cla:def __init__(self,v):self.__value=vdef __getValue(self):print(self.__value)def __setValue(self,v):self.__value=vdef __delValue(self):del self.__valuevalue=property(__getValue,__setValue,__delValue)cla=Cla(5)cla.valuecla.value=10cla.value#del cla.value#cla.value

增加测试删除代码

del cla.valuecla.value

python的实例类方法 修饰器类方法 修饰器保护方法 修饰器静态方法中私有属性的区别和自定义property的读写方法

如果觉得《python的实例类方法 修饰器类方法 修饰器保护方法 修饰器静态方法中私有属性的区别》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。