子类化时如何不必在 init 中输入 self

问题描述 投票:0回答:1

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

	
python python-typing mypy
1个回答
3
投票

class A: def __init__(self, num: int): self.value = num class B(A): def __init__(self: 'B'): A.__init__(self, 7)

如果注释了一个或多个其他参数,Mypy 将允许您在构造函数上省略返回类型,但您需要将其包含在无参数构造函数中。

© www.soinside.com 2019 - 2024. All rights reserved.