具有类和导入的模块

时间:2011-08-03 15:30:02

标签: python python-module

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

结构:

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

我知道我可以删除类和实例,但是我更喜欢这个类,因为如果有人不想直接修改我们的源代码就可以更容易进行子类化,但如果我最终必须这样做,我只会使用方法代替模块中的类/方法。

1 个答案:

答案 0 :(得分:6)

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

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

对我来说似乎是一个合理的解决方案。当然,还有一个缺点是你必须手动保持方法列表同步,但如果你忘记添加一个方法名称会发生​​最糟糕的事情是一条错误信息,告诉你究竟缺少什么。