首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果命令“`dir(‘’.__dir__.__dir__.__dir__.__dir__)”停止打印其属性,则该命令是否结束?

如果命令“`dir(‘’.__dir__.__dir__.__dir__.__dir__)”停止打印其属性,则该命令是否结束?
EN

Stack Overflow用户
提问于 2017-08-08 14:56:55
回答 1查看 61关注 0票数 2

每个对象都有一个__dir__属性,如果附加额外的.__dir__引用,命令会停止吗?

代码语言:javascript
复制
>>> dir(''.__dir__)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']

和,

代码语言:javascript
复制
>>> dir(''.__dir__.__dir__.__dir__.__dir__)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']

当附加足够的'.dir‘时,它会停止吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-08 14:58:26

您正在接受dir()__dir__属性,这是一个builtin_function_or_method对象,它有一个__dir__属性。因此,您可以无休止地链接这些__dir__属性查找,因为结果总是相同的;绑定方法对象:

代码语言:javascript
复制
>>> ''.__dir__.__dir__
<built-in method __dir__ of builtin_function_or_method object at 0x10672cfc0>
>>> ''.__dir__.__dir__.__dir__
<built-in method __dir__ of builtin_function_or_method object at 0x1067361f8>

Python中的每个对象都有一个 attribute,它总是一个可调用的对象。

注意:属性查找的方式使绑定方法对象链保持活动,因此最终会耗尽内存;每个__dir__方法包装器在其__self__属性中引用前面的方法对象。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45571722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档