python 中描述符@property property 大概的样子

class MyProperty:

def init(self, fget=None, fset=None, fdel=None):

self.fget = fget # getter 方法

self.fset = fset # setter 方法

self.fdel = fdel # deleter 方法

def get(self, instance, owner):

if instance is None:

return self

if self.fget is None:

raise AttributeError("不可读")

return self.fget(instance)

def set(self, instance, value):

if self.fset is None:

raise AttributeError("不可写")

self.fset(instance, value)

def delete(self, instance):

if self.fdel is None:

raise AttributeError("不可删除")

self.fdel(instance)

def setter(self, func):

self.fset = func

return self # 返回自己,支持链式调用

class User:

def init(self, name):

self._name = name

@MyProperty # 等价于 name = MyProperty(name)

def name(self):

return self._name

@name.setter

def name(self, value):

self._name = value

u = User("张三")

print(u.name) # 调用 get

u.name = "李四" # 调用 set

print(u.name) # 李四

相关推荐
东莞市云毅网络有限公司4 分钟前
用 Python 给官网做字段级变更监控:快照、比对与变更清单
python·数据清洗·rag·企业知识库·文档解析
学逆向的16 分钟前
C 浮点数e(科学计数法)
c语言·开发语言·网络安全
quantdash_cc26 分钟前
如何给自己的量化策略增加独立数据层?从数据获取到策略解耦的 Python 实践
开发语言·python·数据分析·量化交易·股票数据·quantdash
NeoGressAI外贸数字化27 分钟前
外贸独立站3类页面合格度,怎么用脚本一次跑完
开发语言·python
benchmark_cc36 分钟前
批量获取股票数据后,如何统一转换成 DataFrame?从数据结构到量化研究的完整实践
数据结构·python·数据分析·量化交易·股票数据·quantdash
X北辰北39 分钟前
C++ 进阶第二阶段总结|STL容器全家桶、迭代器失效、STL算法、序列化入门(工程必备)
开发语言·c++·算法
溪语流沙43 分钟前
面试加分项!Manacher:O(n)求最长回文子串的对称之美
java·python·leetcode·面试·职场和发展
树獭哥1 小时前
Deep Agents 学习笔记(一):从 Agent Harness 到第一个 Deep Agent
人工智能·python
旖旎夜光1 小时前
【LangGraph实战】LangGraph 学习笔记(五):信息裁剪、人机交互与时间旅行
笔记·python·学习·ai·人机交互·langgraph