2011-09-16 15 views
0

Pythonでは、モジュールが何らかの初期化を必要とする限り、モジュールが自動的に実行されるようにするために、(ゼロインデント付きの)コードを実行して最初のインポート(右?)。アプリケーションが終了し、モジュールが収集されたときに自動初期化を行う方法はありますか?モジュールの自動初期化(インポート)

答えて

0

ここでこれを行うには私が見つけた一つの方法、です:

class __ModuleInitializer: 
    def __init__(self): 
     print('Module was initialized') 

    def __del__(self): 
     print('Module was deinitialized') 

__module_init = __ModuleInitializer() 
0

あなたは、具体的module.init()方法とmodule.stop()方法

を書きたいように、私は個人的に、私はそれを実行したいときに、少なくとも私に選択肢を与え、私はそれをインポートするときのモジュールで実行されている事を嫌い。サウンズ

+0

私は非常に頻繁にこれを使用して終了していない場合でも、持っていると便利な知識することができます。 PyMunkは、たとえば、モジュールをインポートするときに自動的にライブラリを初期化します。それは素晴らしいことですが、私はいつも 'init'と' quit'関数はRAIIのような原則に反していると思っていました(私はPythonについて特に話していません)。 –

+0

@Paul:しかし、RAIIはGCで言語に意味をなさないのです。また、スコープのモジュールはスコープにはありません。スコープは、ある意味ではリソースのスコープです。スコープバインドされたリソース管理については意味がありません。 –

+0

@Joe私は言葉の貧しい選択をしたと思います。私が言ったのは、モジュールを自動的に(初期化する)ライブラリとして使うことができるということでしたか?つまり、 'init()'を呼び出す代わりに、最初のインポート時に自動的に初期化されます。 'deinit()'を呼び出す代わりに、プログラム終了時に自動的に起こります。 –

関連する問題