0

如果我要在模块中使用一个类,我将如何使它在它的实例中成为“顶级”?

结构:

/package
    __init__.py
    /subPackage
        __init__.py
        module.py
        subModule.py
    /theScript.py

python theScript.py

脚本来源:

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()

我知道我可以删除类和实例,但我更喜欢该类,因为如果有人想要,它可以更容易地在以后进行子类化,而无需直接修改我们的源,但如果我最终不得不使用,我将只使用方法而不是类/方法在模块中。

4

1 回答 1

6

以下是标准库中的random模块如何解决此问题:

_inst = Random()
seed = _inst.seed
random = _inst.random
uniform = _inst.uniform
triangular = _inst.triangular
...

对我来说似乎是一个合理的解决方案。当然,您必须手动保持方法列表同步有一个缺点,但是如果您忘记添加方法名称,最糟糕的情况是会出现一条错误消息,它会准确地告诉您缺少什么。

于 2011-08-03T15:33:39.677 回答