测试模块.py:
def __dir__():
return ['test']
我的模块.py:
import test_module
print dir(test_module)
我期望的结果应该是['test']
,但实际上,结果是:
['__builtins__', '__dir__', '__doc__', '__file__', '__name__', '__package__']
为什么__dir__()
自己定制的不起作用?
测试模块.py:
def __dir__():
return ['test']
我的模块.py:
import test_module
print dir(test_module)
我期望的结果应该是['test']
,但实际上,结果是:
['__builtins__', '__dir__', '__doc__', '__file__', '__name__', '__package__']
为什么__dir__()
自己定制的不起作用?
为什么需要限制为模块列出的内容?dir()
主要是调试工具。
魔术方法通常在对象的类型上查找,因此对于实例,dir()
查找type(instance).__dir__
. 您的函数不在module
类型上,而是在模块实例上。但是,您不能扩展module
类型,因此不能为模块提供自定义__dir__
方法。
如果您想限制from yourmodule import *
导入的内容,请__all__
改用;它应该是一个列表,而不是一个函数。有关详细信息,请参阅import
声明文档。