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)
最佳答案
您需要注释签名的返回类型:
class Foo:
def __init__(self) -> None:
pass
如果注释了一个或多个其他参数,Mypy 将允许您在构造函数上省略返回类型,但您需要将其包含在无参数构造函数中。
关于python - 子类化时如何不必在 init 中键入 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56482426/