代码之家  ›  专栏  ›  技术社区  ›  knut

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

  •  -1
  • knut  · 技术社区  · 5 年前

    我对继承类的类型提示有问题。我如何提供一个类型提示 “从任何类继承…”

    找到了我认为是解决方案的东西,但我仍然从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 回复  |  直到 5 年前
        1
  •  2
  •   knut    5 年前

    因此,删除类型[A]在这里是有意义的。我误解了符号,认为类型[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)