class 实例的方法参数自动完成
Method parameter auto completion for a class instance
我正在尝试自动完成 class 实例的方法参数名称,但不太明白。举个例子 class:
class Abc:
def meth(param):
pass
如果我输入 Abc.meth(p
并按 Tab 我会看到预期的完成 param=
:
但是,如果我尝试对 class Abc().meth(p
的实例执行相同的操作,我在完成结果中看不到 param
:
我在 JupyterLab 和 VS Code 中看到了相同的行为,事实上这适用于其他包的实例,例如 scikit learn,我认为我缺少一些东西。
如何为我的 Abc()
class 的实例获取方法参数完成,类似于上面的 LinearRegression
class?
根据对 JupyterLab 版本 3.2.9 的实验,这似乎是因为自动完成尝试考虑 self
和 cls
等隐式参数。添加一个 self
参数应该可以解决大部分问题。
class Abc:
def meth(arg1, arg2, arg3):
pass
这些是我为上面的 class 提供的完成选项:
Decorator
Abc.meth
Abc().meth
None
arg1, arg2, arg3
arg2, arg3
@staticmethod
arg1, arg2, arg3
arg2, arg3
@classmethod
arg2, arg3
arg3
标准行为很好,但是 Abc().meth
的结果对于两个装饰器都是错误的。正如 staticmethod
and classmethod
的文档中所述:
method can be called either on the class (such as C.f()) or on an instance (such as C().f())
所以当使用装饰器时,两列应该是相同的,但它总是从 Abc().meth
中省略一个参数,大概是 self
。即使在使用 @classmethod
时 Abc.meth
正确处理了 cls
,它最终还是省略了 Abc().meth
中的两个参数。
使用 Visual Studio 代码 1.67.1 进行的测试为所有情况提供了正确的自动完成选项。因此,您遇到的缺失建议是预期的行为,因为 param
取代了 self
并且没有其他参数。
我正在尝试自动完成 class 实例的方法参数名称,但不太明白。举个例子 class:
class Abc:
def meth(param):
pass
如果我输入 Abc.meth(p
并按 Tab 我会看到预期的完成 param=
:
但是,如果我尝试对 class Abc().meth(p
的实例执行相同的操作,我在完成结果中看不到 param
:
我在 JupyterLab 和 VS Code 中看到了相同的行为,事实上这适用于其他包的实例,例如 scikit learn,我认为我缺少一些东西。
如何为我的 Abc()
class 的实例获取方法参数完成,类似于上面的 LinearRegression
class?
根据对 JupyterLab 版本 3.2.9 的实验,这似乎是因为自动完成尝试考虑 self
和 cls
等隐式参数。添加一个 self
参数应该可以解决大部分问题。
class Abc:
def meth(arg1, arg2, arg3):
pass
这些是我为上面的 class 提供的完成选项:
Decorator | Abc.meth | Abc().meth |
---|---|---|
None | arg1, arg2, arg3 | arg2, arg3 |
@staticmethod | arg1, arg2, arg3 | arg2, arg3 |
@classmethod | arg2, arg3 | arg3 |
标准行为很好,但是 Abc().meth
的结果对于两个装饰器都是错误的。正如 staticmethod
and classmethod
的文档中所述:
method can be called either on the class (such as C.f()) or on an instance (such as C().f())
所以当使用装饰器时,两列应该是相同的,但它总是从 Abc().meth
中省略一个参数,大概是 self
。即使在使用 @classmethod
时 Abc.meth
正确处理了 cls
,它最终还是省略了 Abc().meth
中的两个参数。
使用 Visual Studio 代码 1.67.1 进行的测试为所有情况提供了正确的自动完成选项。因此,您遇到的缺失建议是预期的行为,因为 param
取代了 self
并且没有其他参数。