gpt4 book ai didi

python - Python 类中 __getitem__ 的选项卡完整键

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:51 24 4
gpt4 key购买 nike

我正在实现一个包含二维 numpy 数组 (self.data) 的 python 类,我已将其设置为使用字符串键进行列访问。键包含在将名称映射到列索引的字典中(例如,self.coldict={'col0':0,...,'colN':N}),我已经定义

def __getitem__(self,key):
if isinstance(key,str):
return self.data[:,self.coldict[key]]
elif isinstance(key,int):
return self.data[:,key]

这按预期用于列检索。

我希望能够使用制表符完成键,以便我可以键入myObject['c+TAB 在 iPython session 期间获取完成选项。

我认为解决方案应该依赖于 readline 或 prompt_toolkit,但我不清楚如何在不覆盖 iPython 中已经激活的功能的情况下实现更完善的功能。

非常感谢任何帮助。谢谢!

最佳答案

我不确定您是否可以使用 Tab 键完成 __getitem__ 的字符串。 Tab 完成通常用于对象属性。 Tab 完成使用 __dict__ 实例字典和 __dir__(self) 方法中定义的项目。

如果您想要访问属性的制表符完成,您可以。

class MyArray:
...
def __dir__(self):
return super().__dir__() + list(self.coldict.keys())

def __getattr__(self, name):
if name in self.coldict:
return self.data[:,self.coldict[name]]
return super().__getattr__(name)

然后您将访问您的专栏

arr = MyArray() # My numpy array
print(arr.col0) # col0 should allow for tab complete.

关于python - Python 类中 __getitem__ 的选项卡完整键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42771236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com