关键字自动完成适用于dict和pd.DataFrame。我如何使它适用于我自定义的类,如
class mydict: def __init__(self, _dict) -> None: self._dict = _dict def __getitem__(self, key): return self._dict[key]
字符串对于dict
dict
对于mydict
mydict
我试着在谷歌上搜索,但没有找到相关的讨论和解决方案。
oxcyiej71#
这是一个静态分析的挑战。这个问题是从另一个问题开始的:您希望IntelliSense向您建议它静态知道的东西吗(在运行任何代码之前,并且只能通过查看源代码中的信息)可能是指向防御触发器站点的 any 代码路径中的对象类型的给定示例的键?还是由指向防御触发器站点的 all 代码路径保证?这是一个依赖于上下文和用例的设计问题(你不是VS Code的唯一用户,你的用例和上下文也不是宇宙中唯一的用例和上下文)即使在回答了这个问题之后,你也必须接受你所做选择的明显限制。假设你接收到这个对象的一个示例作为函数参数。如果你想获得这个参数的智能感知,那么你将需要从调用函数的所有代码路径中获得保证的并集或交集。即使这样,将有一些代码路径,其中字典类型填充了不可静态确定的值-例如,在运行时从用户输入读取。不管你是否关心来自任何或所有代码路径的保证,那么你必须处理来自以下事实的额外挑战:静态分析不可能知道你将以什么顺序运行代码单元(你可能会以非顺序的顺序多次运行某些单元,并跳过单元),并且它不知道内核处于什么状态。所以,是的,你可以从静态分析中得到非常简单的情况的建议。但是有很多比简单的情况更复杂的情况,他们从困难到不可能给你给予建议。看起来VS Code中的Python和Python扩展只是为dict类型选择了最简单的事情,即建议在代码中任何地方使用该dict的键,而不管事件的顺序如何。这不一定是一件坏事,但有赞成和反对的论点。至于相关的问题单,你可能有兴趣阅读这些:
typing
Literal
你可以提出一个自己的问题票,要求这样一个功能。
1条答案
按热度按时间oxcyiej71#
这是一个静态分析的挑战。
这个问题是从另一个问题开始的:您希望IntelliSense向您建议它静态知道的东西吗(在运行任何代码之前,并且只能通过查看源代码中的信息)可能是指向防御触发器站点的 any 代码路径中的对象类型的给定示例的键?还是由指向防御触发器站点的 all 代码路径保证?这是一个依赖于上下文和用例的设计问题(你不是VS Code的唯一用户,你的用例和上下文也不是宇宙中唯一的用例和上下文)
即使在回答了这个问题之后,你也必须接受你所做选择的明显限制。假设你接收到这个对象的一个示例作为函数参数。如果你想获得这个参数的智能感知,那么你将需要从调用函数的所有代码路径中获得保证的并集或交集。即使这样,将有一些代码路径,其中字典类型填充了不可静态确定的值-例如,在运行时从用户输入读取。
不管你是否关心来自任何或所有代码路径的保证,那么你必须处理来自以下事实的额外挑战:静态分析不可能知道你将以什么顺序运行代码单元(你可能会以非顺序的顺序多次运行某些单元,并跳过单元),并且它不知道内核处于什么状态。
所以,是的,你可以从静态分析中得到非常简单的情况的建议。但是有很多比简单的情况更复杂的情况,他们从困难到不可能给你给予建议。
看起来VS Code中的Python和Python扩展只是为
dict
类型选择了最简单的事情,即建议在代码中任何地方使用该dict的键,而不管事件的顺序如何。这不一定是一件坏事,但有赞成和反对的论点。至于相关的问题单,你可能有兴趣阅读这些:
typing
使用Literal
。你可以提出一个自己的问题票,要求这样一个功能。