Ele*_*naT 8 python attributes object
在Python的文档中,__getattr__它所说的函数:
请注意,如果通过常规机制找到该属性,则不会调用__getattr __().(这是__getattr __()和__setattr __()之间的故意不对称.)这是出于效率原因而做的,因为否则__getattr __()将无法访问实例的其他属性.
我在理解最后一句话时遇到了问题:
无法访问实例的其他属性
究竟怎么没有办法访问其他属性?(我想这与无限递归有关,但是没有其他方法来访问实例属性,比如来自self.__dict__directy?)
神奇的方法__getattribute__()是与 成对出现的__setattr__(),但能力越大,责任越大。 __getattr__()提供这样您就不必承担很大的责任部分。正如 @mgilson 在评论中指出的那样,如果__getattr__()按照这种方式工作__getattribute__(),您将无法从内部访问实例的任何属性__getattr__(),因为即使要查看,self.__dict__您也需要使用属性查找机制。
| 归档时间: |
|
| 查看次数: |
747 次 |
| 最近记录: |