1 python调用属性一样调用方法property
python通过property达到像调用属性一样来调用方法。
存在两种方式:
(1) 类属性:在类中定义值为property对象的类属性。
(2) 装饰器:在方法上应用装饰器@property。
1.1 property作为类属性
用法
property(fget=None, fset=None, fdel=None, doc=None)
#比如:
class C(object):
def __init__(self):self._x = None
def getx(self): return self._x
def setx(self, value): self._x = value
def delx(self): del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
复制
描述
将property()函数赋值给属性x,属性x要和def的函数名一致。
fget – 获取属性值的函数
fset – 设置属性值的函数
fdel – 删除属性值函数
doc – 属性描述信息
c=C(), 则c.x 将触发 getter,c.x = value 将触发 setter , del c.x 触发 deleter,C.x.__doc__将获取doc值。
注意:getx里面的self._x不能用self.x,因为self.x会自动调用getx,这样就会陷入无限循环。
示例
>>> class MyPro:
def __init__(self):self._name=None
def getname(self):return self._name
def setname(self,name):self._name=name
def delname(self):del self._name
name=property(getname,setname,delname,'这是name property')
>>> mp=MyPro()
# 调用属性一样调用方法
>>> mp.name='梯阅线条'
>>> mp.name
'梯阅线条'
>>> MyPro.name.__doc__
'这是name property'
>>> del mp.name
>>> mp.name
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
mp.name
File "<pyshell#44>", line 3, in getname
def getname(self):return self._name
AttributeError: 'MyPro' object has no attribute '_name'
复制
本文首发微信公众号:梯阅线条,
更多内容参考python知识分享或软件测试开发目录。
文章转载自梯阅线条,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
[MYSQL] 服务器出现大量的TIME_WAIT, 每天凌晨就清零了
大大刺猬
143次阅读
2025-04-01 16:20:44
mysql提升10倍count(*)的神器
大大刺猬
123次阅读
2025-03-21 16:54:21
演讲实录|分布式 Python 计算服务 MaxFrame 介绍及场景应用方案
阿里云大数据AI技术
123次阅读
2025-03-17 13:27:37
官宣,Milvus SDK v2发布!原生异步接口、支持MCP、性能提升
ZILLIZ
96次阅读
2025-04-02 09:34:13
[MYSQL] query_id和STATEMENT_ID在不同OS上的关系
大大刺猬
67次阅读
2025-03-26 19:08:13
DataWorks :Data+AI 一体化开发实战图谱
阿里云大数据AI技术
46次阅读
2025-03-19 11:00:55
国密算法介绍
漫步者
44次阅读
2025-03-21 09:20:39
如何使用 RisingWave 和 PuppyGraph 构建高性能实时图分析框架
RisingWave中文开源社区
37次阅读
2025-03-18 10:49:54
WingPro for Mac 强大的Python开发工具 v10.0.9注册激活版
一梦江湖远
33次阅读
2025-03-29 10:33:27
python操作MySQL数据库
怀念和想念
29次阅读
2025-03-30 23:22:07