做茶叶网站公司,网站建设运营属于经营范围,网站建设的流程及步骤,郑州效果图设计工作室1 python调用属性一样调用方法property
python通过property达到像调用属性一样来调用方法。
存在两种方式#xff1a;
#xff08;1#xff09; 类属性#xff1a;在类中定义值为property对象的类属性。
#xff08;2#xff09; 装饰器#xff1a;在方法上应用装饰…1 python调用属性一样调用方法property
python通过property达到像调用属性一样来调用方法。
存在两种方式
1 类属性在类中定义值为property对象的类属性。
2 装饰器在方法上应用装饰器property。
1.1 property作为类属性
用法
property(fgetNone, fsetNone, fdelNone, docNone)
#比如
class C(object):def __init__(self):self._x Nonedef getx(self): return self._xdef setx(self, value): self._x valuedef delx(self): del self._xx property(getx, setx, delx, Im the x property.)描述
将property()函数赋值给属性x属性x要和def的函数名一致。
fget – 获取属性值的函数
fset – 设置属性值的函数
fdel – 删除属性值函数
doc – 属性描述信息
cC(), 则c.x 将触发 getter,c.x value 将触发 setter del c.x 触发 deleterC.x.__doc__将获取doc值。
注意getx里面的self._x不能用self.x因为self.x会自动调用getx这样就会陷入无限循环。
示例 class MyPro:def __init__(self):self._nameNonedef getname(self):return self._namedef setname(self,name):self._namenamedef delname(self):del self._namenameproperty(getname,setname,delname,这是name property)mpMyPro()
# 调用属性一样调用方法mp.name梯阅线条mp.name
梯阅线条MyPro.name.__doc__
这是name propertydel mp.namemp.name
Traceback (most recent call last):File pyshell#49, line 1, in modulemp.nameFile pyshell#44, line 3, in getnamedef getname(self):return self._name
AttributeError: MyPro object has no attribute _name