Если, например, я использую @property для инкапсуляции «частного» значения, я заметил, что такой интерпретатор, как IPython, не выполняет автозаполнение атрибутов этого значения.
Например:
class ClassA(object):
def __init__(self):
pass
def do_print(self):
print("printing")
class ClassB(object):
def __init__(self):
self._val = ClassA()
@property
def val(self):
return self._val
Теперь, если я создам экземпляр ClassB с IPython и попытаюсь получить доступ к функции "do_print" через "val", он не будет автозаполняться. Это работает, если я уже знаю, что "do_print" есть, хотя ..
Я понимаю, почему это происходит, конечно, я просто хотел узнать, есть ли способ заставить это работать, потому что когда я пишу модуль, я хочу использовать @property, но я также хочу, чтобы мои пользователи могли полностью изучить функциональность моего модуля с помощью таких интерпретаторов, как IPython.
Как мне этого добиться?