Python VSCode+;Pylance:已识别类属性,但没有可用的自动完成
我最近在VSCode上安装了Pylance作为python语言服务器。 我正在用PyQt5构建一个应用程序。在所讨论的剧本中, 我正在继承由pyqt5 uic自动生成的UI python脚本Python VSCode+;Pylance:已识别类属性,但没有可用的自动完成,python,visual-studio-code,pyqt,pylance,Python,Visual Studio Code,Pyqt,Pylance,我最近在VSCode上安装了Pylance作为python语言服务器。 我正在用PyQt5构建一个应用程序。在所讨论的剧本中, 我正在继承由pyqt5 uic自动生成的UI python脚本listProfiles是在Ui\u profilemain窗口中生成的QListView对象 class ProfileMainWindow(QMainWindow, Ui_ProfileMainWindow): def __init__(self, model = None): s
listProfiles
是在Ui\u profilemain窗口中生成的QListView
对象
class ProfileMainWindow(QMainWindow, Ui_ProfileMainWindow):
def __init__(self, model = None):
super().__init__()
self.setupUi(self)
if model:
self.listProfiles.setModel(model)
Pylance能够看到listProfiles
属性,并将其识别为QListView
对象:
但没有为其提供自动完成功能:
此外,当鼠标位于self.listProfiles
上方时,会为其指出一个通用的Any
类型:
我真的搞不懂发生了什么事。
在想到bug之前,我想假设我把事情搞砸了
由于这是我与Pylance合作的一天,我想说,在我安装语言服务器时,这并没有发生,但我不确定这段信息,因为我正在处理脚本的另一部分,也许,我只是没有意识到这一点
代码中没有错误,因为应用程序可以正常运行和工作
编辑1
通过交换继承类的顺序,问题得以解决:
class ProfileMainWindow(Ui_ProfileMainWindow,QMainWindow):
def __init__(self, model = None):
super().__init__()
self.setupUi(self)
if model:
self.listProfiles.setModel(model)
仍然无法找出原因和发生了什么。
super
可能会导致多重继承(blabla解析)的奇怪行为,最好不要使用super
,并且始终从所需的类调用该方法,如QMainWindow。u_u初始化(self)
它在同一文件中具有自定义类的测试脚本中工作吗?PyLance是否拾取字段?在Qt中,所有类的所有字段都隐藏在外部世界看不见的阴影对象中。检查Qt对象所在的py文件defined@rioV8,尝试替换QMainWindow.\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuwork@BuzzPylance可能使用编译库(用C++编写)不支持的某些功能实现自动完成像pyqt.isUi\u ProfileMainWindow
aQMainWindow
或者它们是否有共享基类?我的super
评论不是问题的解决方案,而是一般性的非使用建议