类中用 property 的代码:`obj = property(lambda self: object(), ...)` 解释
注:标题因为字数限制,代码不全;请看下面正文是(问题的)“完整”代码。
一份 python 库中的源码节选:
【问题源码】
class SomeBase(object):
def __init__(self, ...):
...
obj = property(lambda self: object(), lambda self, v: None, lambda self: None) # default
其中 「...
」 表示省略。
【使用】
在调用的时候,如:
func(instance_of_SomeBase.obj)
得到什么效果???
【具体问题】
几个具体的问题点:
- instance_of_SomeBase.obj 是一个类实例吗?即 “base” 类中的 obj 用 property “包装” 和 property 内部的 lambda 是怎么作用的?得到的
.obj
是什么东西? func(instance_of_SomeBase.obj)
funct 内得到的第一个参数 obj,这个 obj 和 SomeBase(类)有关系吗?
如果描述有什么不足的地方,可以在评论区指出,我可以再编辑补充。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
https://docs.python.org/3/how... 仔细读下
推荐《流畅的Python》元编程一章有对property(特性)细致的解释
简单而言,property在不改变类接口的前提下,使用存取方法( 即读值方法和设值方法)修改数据属性。
调用
lambda self: object()
,这里 self就是instance_of_SomeBase,调用
lambda self, v: None
, 没有做任何事情调用
lambda self: None
func(instance_of_SomeBase.obj)
是第一种情况:取值,返回一个object,这个object和instance_of_SomeBase没有什么关系了,下次 instance_of_SomeBase.obj 取值,又会新创建一个object