基于JupyterLab 3.2.9版的实验,这似乎是因为autocomplete试图考虑隐式参数,如self
和cls
.包含self
个参数应该可以解决大部分问题.
class Abc:
def meth(arg1, arg2, arg3):
pass
以下是我为上述课程提供的完成选项:
Decorator | Abc.meth | Abc().meth |
---|---|---|
None | arg1, arg2, arg3 | arg2, arg3 |
@staticmethod | arg1, arg2, arg3 | arg2, arg3 |
@classmethod | arg2, arg3 | arg3 |
标准行为是好的,但Abc().meth
的结果在两个装饰师身上都是错误的.如staticmethod
和classmethod
的文件所述:
方法可以在类(如C.f())或实例(如C())上调用.f())
所以当使用decorator时,这两个列应该是相同的,但它总是从Abc().meth
中省略一个参数,大概是self
.尽管在使用@classmethod
时,Abc.meth
正确地处理了cls
,但它最终在Abc().meth
中忽略了两个参数.
使用VisualStudio代码1.67.1进行的测试为所有情况提供了正确的自动完成选项.因此,您在那里体验到的缺失建议是预期行为,因为param
取代了self
,并且没有其他参数.