Python __getattr__ автозаполнение
__getattr__
может использоваться для определения атрибутов объектов. Например, следующий код вернется 'bar'
,
class Test(object):
def __getattr__(self, key):
if key == 'foo':
return 'bar'
t = Test()
t.foo
Чтобы сделать жизнь немного проще, я хотел бы иметь возможность печатать t.
в ipython, а затем завершите вкладку имени атрибута. Кажется, я не могу найти, как это можно сделать, хотя это кажется возможным. Например, запустите следующий код в ipython
import pandas
df = pandas.DataFrame(data={'foo': ('bar',)})
Typing df.
а табуляция позволяет выбрать foo
вариант. Я не мог найти, как pandas делает это в своем коде, поэтому я спрашиваю здесь. Что я должен добавить к своему Test
класс такой, что таб-завершение будет работать?
1 ответ
Вы можете достичь этого с __dir__
метод. ниже приведен пример для класса, который содержит DataFrame
def __dir__(self):
return self.df.keys()