【发布时间】:2017-10-25 00:40:51
【问题描述】:
__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 选项。我在它的代码中找不到 pandas 是如何做到这一点的,所以我在这里问。我应该在我的 Test 类中添加什么以使制表符完成工作?
【问题讨论】:
-
我相信不是
pandas这样做,而是ipython使自己适应已知的类。也许他们有一个 API,也许他们不提供扩展。 -
如果这是真的,ipython 会检查
df以找到它的列,对吗?我希望有一些类似于__attrs__属性的东西,其中包含有效属性列表。 -
如果是这样,那么可能会有答案;但这也可能是对已知类的特定扫描,它是不同的并且取决于类。
标签: python autocomplete attributes tab-completion