Я пытаюсь создать класс, которому можно присвоить любой объект при создании, а затем в интерактивном режиме перечислить все вызываемые методы этого объекта. Я использую модуль PyInquirer
для интерактивного приглашения и модуль inspect
для получения всех методов данного объекта.
Мне до сих пор удалось динамически построить приглашение для любого данного объекта, но моя программа выдает ошибку Foo() takes 0 positional arguments but 1 was given
при попытке вызвать один из методов из приглашения.
Я думаю, что причина ее сбоя в том, что во время выполнения больше нет ссылок на объект, поэтому его счетчик ссылок равен нулю, и объект освобождается.
Если бы я мог заставить класс сохранить собственную ссылку на объект, то это решит проблему. Например,
def __init__(self, object):
# Create a local reference the object
self.__object = &object
Но это недопустимо python.
Как получить ссылку на объект (или вручную увеличить счетчик ссылок и вручную уменьшить его в __del__
function)?
Полный исходный код для ObjectMethodTerminal.py можно найти здесь https://gitlab.com/snippets/1939696