|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 bio911 于 2023-11-13 14:52 编辑
再次向论坛各位大神请教:
一、例子中自定义一个属于我们自己的MyProperty,其中class C这个类定义中,定义了getX,setX,和delX这三个方法
问题1:定义属于我们自己的MyProperty,这个那么class C中这个x = MyProperty(getX,setX,delX)的 MyProperty到底是描述符还是函数呢?
问题2:class C定义getX,setX,和delX这三个方法的目的是什么?不是要定义一个属于自己的Property吗?不应该在描述符MyProperty中去定义吗?
(参照知乎例子-如何理解 Python 的 Descriptor? - 刘志军的回答 - 知乎
代码行
(三w.zhihu.com/question/25391709/answer/30634637)
问题3:这三个方法是否应该拿到描述符MyProperty中去定义呢,如果自定义的MyProperty(类似BIF中Property函数)要实现装饰器功能的话?
二、学习中,看到不少人强调/提到属性访问的顺序:
1、调用_ _getattribute_ _
2、调用数据描述符
3、调用当前对象的属性
4、调用类的所属成员
5、调用非数据描述符
6、调用父类的属性
7、调用_ _getattr_ _
请问上述的这个优先级顺序,记住这个顺序的目的是什么?
三、如何理解 Python 的 Descriptor? - 刘缙的回答 - 知乎(三w.zhihu.com/question/25391709/answer/30634637)解答从机制上不是很明白。
我的理解:(费劲拜读了很多遍刘缙老师的解答,太深奥了)如果是数据描述符,则按"类-基类-实例"顺序访问属性;如果是非数据描述符,则按"实例-类-基类"顺序访问属性,对吗? |
|