Автозаполнение с инкапсуляцией свойства декоратора - PullRequest
0 голосов
/ 07 марта 2019

Если, например, я использую @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.

Как мне этого добиться?

...