继承类的类型提示在mypy中不起作用

时间:2019-04-28 09:59:43

标签: python subclass type-hinting mypy typehints

我在继承类的类型提示方面遇到问题。我如何提供类型提示,说明“任何继承自...的类”

找到了我想解决的办法,但是我仍然从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 :(得分:0)

因此删除Type [A]在这里确实有意义。我误解了这种表示法,并认为Type [A]提示表示从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)