如何正确输入提示:
from typing import Optional
class A: ...
class B(A): ...
class C(A): ...
my_dict: dict[str, list[Optional[A]]] = {"b": [], "c": []}
b: list[Optional[B]] = [B()]
c: list[Optional[C]] = [C()]
my_dict["b"] = b
my_dict["c"] = c
我在
mypy
中收到以下错误:
error: Incompatible types in assignment (expression has type "list[B | None]", target has type "list[A | None]") [assignment]
这可行,但不是我想要的:
b: list[Optional[A]] = [B()]
c: list[Optional[A]] = [C()]`
我天真地认为信息将被继承,
B
和C
是A
的子级,因此分配是有效的,因为这是有效的:
bb: A = B()
cc: A = C()
我的处理方式是否错误?有人可以帮忙吗?
我不想说得太冗长。假设我在现实生活中有更长的
B
和 C
类名。
不确定为什么在这里使用Optional。
所有三个类都是 A 的实例,所以它只是:
class A: ...
class B(A): ...
class C(A): ...
my_dict: dict[str, list[A]] = {"b": [], "c": []}
my_dict["b"] = [B()]
my_dict["c"] = [C()]