我不知道如何继续定义一个派生类,它有一个带有不同数字或参数的重载__init__()
构造函数。
该课程来自Qt5,我使用的是PyQt5(虽然我认为这本身并不重要)。在QtGui.pyi
我看到:
class QStandardItemModel(QtCore.QAbstractItemModel):
@typing.overload
def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
@typing.overload
def __init__(self, rows: int, columns: int, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
我的首发尝试是:
class DBStandardItemModel(QtGui.QStandardItemModel):
@typing.overload
def __init__(self, parent: typing.Optional[QtCore.QObject] = None) -> None:
super().__init__(parent)
@typing.overload
def __init__(self, rows: int, columns: int, parent: typing.Optional[QtCore.QObject] = None) -> None:
super().__init__(rows, columns, parent)
然而,在PyCharm中,第二个__init__
警告我:
A series of @overload-decorated methods should always be followed by an implementation that is not @overload-ed
__init__
定义编写什么代码,因为您可以看到重载具有不同数量的参数?QtGui.pyi
的定义没有提供额外的非重载定义,但似乎在我的代码中。super().__init__()
s放入我的每个重载中,因为没有PyCharm抱怨Call to __init__ of super class is missed
,我不知道这是否正确/需要。