構築時に任意のオブジェクトを指定できるクラスを作成しようとしており、そのオブジェクトの呼び出し可能なすべてのメソッドを対話型プロンプトに一覧表示します。PyInquirer
対話型プロンプト用のinspect
モジュールと、指定されたオブジェクトのすべてのメソッドを取得するためのモジュールを使用しています。
これまでのところ、特定のオブジェクトのプロンプトを動的に作成することに成功しましたがFoo() takes 0 positional arguments but 1 was given
、プロンプトからメソッドの 1 つを呼び出そうとするとプログラムでエラーが発生します。
クラッシュする理由は、実行時にオブジェクトへの参照がなくなったため、参照カウントがゼロになり、オブジェクトが解放されたためだと思います。
クラスにオブジェクトへの独自の参照を保持させることができれば、これで問題は解決します。例えば
def __init__(self, object):
# Create a local reference the object
self.__object = &object
しかし、これは無効な python です。
オブジェクトへの参照を取得するにはどうすればよいですか (または参照カウントを手動でインクリメントし、__del__
関数で手動でデクリメントします)。
ObjectMethodTerminal.py の完全なソース コードは、https: //gitlab.com/snippets/1939696 にあります。