Как не нужно вводить self в init при создании подклассов - PullRequest
1 голос
/ 06 июня 2019

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)

1 Ответ

3 голосов
/ 06 июня 2019

Вам необходимо аннотировать возвращаемый тип вашей подписи:

class Foo:
    def __init__(self) -> None:
        pass

Mypy позволит вам опустить возвращаемый тип для конкретно конструктора, если аннотируется один или несколько других аргументов, но вам нужно будетвключить его в конструкторы без аргументов.

...