test_module.py:
def __dir__():
return ['test']
my_module.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
语句文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句