行使get-set-del要领操纵私有成员
- class obj:
- def __init__(self,name):
- self.name=name
- def prin(self):
- print self.name
- __age = 18
- # 加上双下划线的就是私有变量,只能在类的内部会见,外部无法会见
- @classmethod
- # 假如要在类中挪用,起首挪用类要领
- def pri(cls):
- print cls.__age
- # 然后在行使
- @classmethod
- def set_age(cls,value):
- cls.__age = value
- return cls.__age
- # 这个用法就是改变__age的值
- @classmethod
- def get_age(cls):
- return cls.__age
- # 这个用法就是直接返回__age的值
- @classmethod
- def del_age(cls):
- del cls.__age
- # 这个用法就是直接删除__age的值
-
- print obj.get_age()
- # 这里是直接挪用出__age的值 返回值18
- print obj.set_age(20)
- # 这里是直接改变__age的值 返回值20
- obj.del_age()
- # 这里是直接删除__age的值
思索: 既然是私有变量,不让外部会见,为何有要在后头挪用又改变呢?由于可以对私有变量举办特另外检测,处理赏罚,加工等等。好比判定value的值,行使isinstance然后做if-else判定。
行使私有变量可以对内部变量举办掩护,外部无法改变,可是可以对它举办检测处理赏罚。
这里引申一下私有成员的掩护机制,行使__age对私有变量着实就是—>obj._obj__age的样子举办掩护,说白了你直接行使obj._obj__age就可以直接挪用内部私有变量age了。
Propety装饰器
把类的要领伪装成属性挪用的方法,就是把类内里的一个函数,酿成一个属性一样的对象~
一开始挪用类的要领要行使圆括号,此刻酿成了属性举办读取配置存储。
举个例子来声名:
常用的挪用要领
- class obj:
- def __init__(self,name,age):
- self.__name=name
- self.__age=age
- # 讲这些配置成私有变量
- def get_age(self):
- return self.__age
- def set_age(self,value):
- if isinstance(value,int):
- self.__age=value
- else:
- raise ValueError('非整数范例')
- def del_age(self):
- print 'delete over'
- a = obj('langzi',18)
- print a.get_age()
- a.set_age(20)
- print a.get_age()
行使装饰器
- class obj:
- def __init__(self,name,age):
- self.__name=name
- self.__age=age
- # 把这些配置成私有变量
- @property
- def age(self):
- return self.__age
- @age.setter
- def age(self,value):
- if isinstance(value,int):
- self.__age=value
- else:
- raise ValueError('非整数范例')
- @age.deleter
- def age(self):
- print 'delete over'
- a = obj('langzi',18)
- # 行使这些装饰器,可以行使类与工具的要领直接挪用
- print a.age
- # 这里就是直接挪用返回age的值
- a.age=20
- # 这里就是直接行使setter把值转换
- print a.age
- del a.age
- # 删除age
虽然这种挪用要领有些贫困,每次都是一个一个去实例类与工具,有个越发简朴直观的要领。
越发减半的行使property()函数 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|