-3

構築時に任意のオブジェクトを指定できるクラスを作成しようとしており、そのオブジェクトの呼び出し可能なすべてのメソッドを対話型プロンプトに一覧表示します。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 にあります。

4

1 に答える 1