如果我在一个模块中使用一个类,我怎么能在它的实例中使它成为“顶级”?
结构:
/package
__init__.py
/subPackage
__init__.py
module.py
subModule.py
/theScript.py
python theScript.py
TheScript的来源:
import package.subPackage.module
package.subPackage.module.method()
/package/subPackage/module.py的来源:
class module:
def method(self): pass
moduleInstance = module()
我想我要问的是我将如何制作它以便我不必package.subPackage.module.moduleInstance.method()
并package.subPackage.module.method()
我知道我可以删除类和实例,但是我更喜欢这个类,因为如果有人不想直接修改我们的源代码就可以更容易进行子类化,但如果我最终必须这样做,我只会使用方法代替模块中的类/方法。
答案 0 :(得分:6)
以下是标准库中的random
module如何解决此问题:
_inst = Random()
seed = _inst.seed
random = _inst.random
uniform = _inst.uniform
triangular = _inst.triangular
...
对我来说似乎是一个合理的解决方案。当然,还有一个缺点是你必须手动保持方法列表同步,但如果你忘记添加一个方法名称会发生最糟糕的事情是一条错误信息,告诉你究竟缺少什么。