Eth*_*man 5 python api python-3.x
我有一个模块,它在实用程序类型函数和核心api函数之间大致分成两半.我需要将它们全部__all__放入以便help()有用,并且还要指定模块中的许多函数/类/等中的哪一个用于外部使用,但我也想支持from mymodule import *作为获取核心的方法功能到其他模块.有没有办法做到这一点?
几乎。虽然您不能__all__以这种方式执行双重任务,但您可以添加自己的虚拟 api 模块,然后可以将其导入...
class fake_module(object):
def __init__(self, name, *args):
self.name = name
self.__all__ = []
all_objects = globals()
for name in args:
self.__dict__[name] = all_objects[name]
self.__all__.append(name)
def register(self):
sys.modules["%s.%s" % (__name__, self.name)] = self
fake_module('api', 'class1', 'class2', 'func3', 'exception4').register()
Run Code Online (Sandbox Code Playgroud)
然后在其他模块中,而不是from mymodule import *您可以from mymodule.api import *只获得所需的子集,同时仍将所有内容保留在单个模块中。
注意:from ... import *通常不是好的做法,应该非常小心地使用,并且只能与明确声明它们是在设计时考虑到这种用法的模块/包一起使用。
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |