如果命令'dir(''.\uu dir\uuu.\uu dir\uuu.\uu dir\uuuu.\uu dir\uuuu)`终止打印其属性?

2024-03-28 09:20:23 发布

您现在位置:Python中文网/ 问答频道 /正文

每个对象都有一个__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(''.__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”时,它会停止吗?你知道吗


Tags: gtleformatreducedocinitdirhash
1条回答
网友
1楼 · 发布于 2024-03-28 09:20:23

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

>>> ''.__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__属性中引用前面的方法。你知道吗

相关问题 更多 >