【发布时间】:2019-10-06 07:36:12
【问题描述】:
我有一个基类,其函数在子类中被覆盖。
函数的签名也(部分)改变了,以一种(据我所知)符合父类的方式(例如,添加了额外的参数)。
但是,我的 IDE (IntelliJ IDEA) 显示一个警告,即子类中方法的签名与基方法的签名不匹配。
例如:
class BaseFoo():
def func(self, uid: int, *args, **kwargs):
pass
class Foo(BaseFoo):
def func(self, uid: int, name: str, *args, **kwargs):
pass
显示此警告:
“Foo.func()”方法的签名与“BaseFoo”类中基方法的签名不匹配
如何编写这些类以使 IDE 能够识别子类中的函数签名确实与父类的函数签名匹配?
也就是说,假设它们在我的示例中匹配(我错了吗?),不想抑制这种警告(如果我错过了 uid 参数怎么办?)。
【问题讨论】:
-
如果签名不同,它不是覆盖,而是重载。
-
签名确实不同,因为您添加了
name参数。如果您希望签名保持不变,请使用name作为kwargs['name']中包含的密钥参数 -
重载?但它在一个子类中,而不是在同一个类中
-
@OferSadan 没有找到其他解决方案,我将您的评论作为答案发布
标签: python inheritance intellij-idea