我在继承类的类型提示方面遇到问题。我如何提供类型提示,说明“任何继承自...的类” ?
找到了我想解决的办法,但是我仍然从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)
答案 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)