Я наблюдаю странное поведение автозаполнения атрибутов объекта в IPython:
x1.<tab>
Работает просто отлично и предлагает элементы в x1.__dir__()
, среди которых x2
. Однако это не работает (ничего не предлагается):
x1.x2.<tab>
Однако x1.x2.__dir__()
возвращает список строк.
Что еще более странно, это то, что это РАБОТАЕТ:
x3 = x1.x2
x3.<tab>
Реализации классов x1
и x1.x2
довольно сложны, тем более что он переопределяет __dir__
и динамически генерирует возвращаемое значение. Кажется, что моя реализация этих классов является проблемой, потому что я не могу воспроизвести проблему на простом примере.
Есть ли в атрибуте автозаполнения больше, чем возвращаемое значение obj.__dir__()
? Как я могу отладить то, что Ipython пытается сделать, когда я нажимаю?