2011-12-09 15 views
1

Pythonの実行中のインスタンスからクラス定義を削除することはできますか?Pythonからクラス定義を削除することはできますか?

私は、アプリケーションの現在の状態に応じて、クラスを追加したり削除したりするために、C++に組み込まれたPythonインタプリタを持っています。たとえば、そのメニューに対応するクラスが定義されているメニュー階層がある場合、メニューが表示されていない場合はそのクラスを削除したいと考えています。

解決策の1つは、クラスをモジュールに入れてそのモジュールをアンロードすることです(How do I unload (reload) a Python module?)が、もっと簡単な方法があるのだろうかと思います。

+2

このようなことを行うための主な目標を追加できますか?たとえば、メモリ使用量を抑えることですか?理由は、これは私にとっては不必要な複雑さのように思えます:)このことを実際に行っていたユースケースを知りたいと思います。 –

+1

私はまた、ユースケースについて興味があります。 –

答えて

6

delをクラスの参照に使用してください。

>>> class Example(object): 
...  pass 
... 
>>> Example 
<class '__main__.Example'> 
>>> del Example 
>>> Example 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'Example' is not defined 
+1

パーフェクト!ありがとうございました。 –

+0

私は、実行中のプログラムがクラスへの参照を持たないときでさえ、そのメモリがプログラムの持続時間の間解放されないという、長時間実行する "機能"があると思います。 – tzot

関連する問題