MCVE:
class A:
def __init__(self, num: int):
self.value = num
class B(A):
def __init__(self): # Mypy: function is missing a type annotation
A.__init__(self, 7) # Mypy: Expression has type "Any"
我希望Mypy不必强迫我键入self
。对我来说,self
的类型是显而易见的,而Mypy能够为A
找出答案,那么为什么不B
呢?
如何定义B
,以免被迫执行以下操作?
class A:
def __init__(self, num: int):
self.value = num
class B(A):
def __init__(self: 'B'):
A.__init__(self, 7)
答案 0 :(得分:3)
您需要注释签名的返回类型:
class Foo:
def __init__(self) -> None:
pass
如果注释了一个或多个其他参数,则Mypy将允许您省略特定于构造函数的返回类型,但是您需要将其包括在无参数构造函数中。