python变量封装:@property最终写法

变量的封装只有在有逻辑限制的情况下使用。

@property#创建property对象,只负责拦截读取操作

@方法名.setter#只负责拦截写入操作

属性:@property

公开实例变量,缺少逻辑验证,私有的变量与两个公开的方法相结合,又使调用又使操作者略显复杂,而属性会使两个方法的使用方式象操作变量一样方便

定义:

@property#创建property对象,只负责拦截读取操作

def lia(self):

return self.__lia

@lia.setter#只负责拦截写入操作

def lia(self,value):

if 10<=value<=80:

self.__lia=value

调用; 对象.属性名=数据

变量=对象.属性名

作用:通常两个公开的属性,保护一个私有变量。(也就是读用@property,写用变量名,setter保护)

只写:变量名=property(None,写入方法名)

如:lia = property(None, set_lia)#只能写不有读

注意:此方法的方法名必须与变量同名。

#####################################################################

例如:下面是创建一个人,有姓名,年龄和体重,但要限制其年齝和体重的读写。

class Diren:

def __init__(self,name,lia,gj):

self.name=name

self.lia=lia

self.gj=gj

@property#创建property对象,只负责拦截读取操作

def lia(self):

return self.__lia

@property

def gj(self):

return self.__gj

@lia.setter#只负责拦截写入操作

def lia(self,value):

if 10<=value<=80:

self.__lia=value

else:

raise EOFError("超出范围")

@gj.setter

def gj(self,value):

if 30<=value<=50:

self.__gj=value

raise EOFError("超出范围")

dr=Diren("小辣椒",20,45)

dr.lia=35

print(dr.lia)

dr.gj=30

print(dr.gj)

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章