python __getattr__自动完成

时间:2017-05-24 15:07:10

标签: python autocomplete attributes tab-completion

__getattr__可用于定义对象的属性。例如。以下代码将返回'bar'

class Test(object):
    def __getattr__(self, key):
        if key == 'foo':
            return 'bar'
t = Test()
t.foo

为了让生活更轻松,我希望能够在ipython中输入t.,然后选项卡完成属性名称。我似乎无法找到如何做到这一点,而这似乎是可能的。例如。在ipython中运行以下代码

import pandas
df = pandas.DataFrame(data={'foo': ('bar',)})

键入df.和制表符允许选择foo选项。我无法在其代码中找到熊猫是如何做到的,所以我在这里问。我应该向Test课程添加什么才能使标签完成工作?

1 个答案:

答案 0 :(得分:3)

您可以使用__dir__方法来实现。 以下是包含DataFrame的类的示例

def __dir__(self):
    return self.df.keys()