私の人生の間、私はPythonの移行が非常に苛立たしいことに気づいています。私がやろうとしていることの1つは、構成ディクショナリからクラスの単一インスタンスを初期化してから、他のモジュールでそのクラスにアクセスすることです。
私が直面している問題/私が取ったアプローチはうまくいかず、誰かが正しい「pythonic」アプローチで操縦できることを望んでいます。
まず、私のアプリは、ツイストプラグインの一部として、またはスタンドアロンスクリプトとして初期化できます。
import resource
class App(object):
_config = None
_someotherobject = None
def __init__(self, config):
self._config = config
....
def main():
global myapp
myapp = App({}) # Could use help here, how to pass config to it
myapp = None #Global doesnt work as I expect, it doesnt modify this instance, stays as None
if __name__ == '__main__':
main()
#-----------resource.py
class Foo(object):
def foo(self):
app.myapp.somefunction() #NoneType object has no attribute
他のモジュールのコードが開始される前に、アプリオブジェクトが作成されていることを確認しました。モジュール内の「グローバル」インスタンスが実際に期待どおりに機能しない理由がわかりません。また、別のモジュールからインスタンスを参照する方法についても混乱しています。
-----編集------いくつかのポイントを明確にするために、スクリプトはpython app.py
app.pyで呼び出されresources.py
、クラス定義の束であると呼ばれるモジュールを参照します。一部のクラスでは、実行時に、app.myappの「シングルトン」インスタンスを参照します。