Тип подсказок для унаследованных классов не работает в mypy - PullRequest
0 голосов
/ 28 апреля 2019

У меня проблемы с подсказками типов для унаследованных классов. Как я могу предоставить подсказку типа, которая говорит "любой класс, который наследуется от ..." ?

Нашел то, что я хотя бы решил, но я все еще получаю ошибку от mypy (см. Прикрепленное изображение).

from typing import List, Type

class A:
    def __init__(self):
        pass

class B(A):
    def __init__(self, parent: Type[A]):
        super().__init__()
        self.parent = parent

class C(A):
    def __init__(self, parent: Type[A]):
        super().__init__()
        self.parent = parent


o_a: A = A()
o_b: B = B(parent=o_a)
o_c: C = C(parent=o_b)

things: List[Type[A]] = []
things.append(o_a)
things.append(o_b)
things.append(o_c)

enter image description here

1 Ответ

0 голосов
/ 28 апреля 2019

Так что удаление Type [A] имеет смысл здесь.Я неправильно понял нотацию и подумал, что подсказка Type [A] означает любой объект типа, который наследуется от A, а это не так.Вместо этого это означает сам тип класса А.

Спасибо за ответы.Проблемы в проекте, которые заставили меня написать этот пример, должны быть чем-то другим.

from typing import List, Type

class A:
    def __init__(self):
        pass

class B(A):
    def __init__(self, parent:A):
        super().__init__()
        self.parent = parent

class C(A):
    def __init__(self, parent:A):
        super().__init__()
        self.parent = parent


o_a: A = A()
o_b: B = B(parent=o_a)
o_c: C = C(parent=o_b)

things: List[A] = []

things.append(o_a)
things.append(o_b)
things.append(o_c)
...