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 に答える