python 组合 class 中 class 和 children 的类型提示
python type hinting for class and children in composition class
我正在努力做到这一点:
@dataclass
class A:
pass
@dataclass
class B(A):
pass
@dataclass
class container:
stuff: List[A OR B OR any future defined child class]
我在这里和 PEP484 页面上找到的唯一方法似乎是这样的...除了它不起作用
thing_co = TypeVar('thing_co', covariant=True)
class ListOfAOrLower(List[thing_co ]):
pass
@dataclass
class container:
stuff: ListOfAOrLower
当我尝试创建我的容器(即“container([B()])”)时,vscode 中的 pylance 说类型不兼容。当我试图说“stuff”是一个 List[thing_co] 时,pylance 报告“TypeVar“thing_co”在此上下文中没有任何意义”。
我觉得我正在尝试做的事情非常简单,但我无法让类型检查器接受这个非常标准的公式。谁能建议如何让类型检查器屈服于我的意愿?谢谢
我的问题是 pylance 与数据类装饰器交互。通过指定我自己的初始化函数解决了这个问题。
我正在努力做到这一点:
@dataclass
class A:
pass
@dataclass
class B(A):
pass
@dataclass
class container:
stuff: List[A OR B OR any future defined child class]
我在这里和 PEP484 页面上找到的唯一方法似乎是这样的...除了它不起作用
thing_co = TypeVar('thing_co', covariant=True)
class ListOfAOrLower(List[thing_co ]):
pass
@dataclass
class container:
stuff: ListOfAOrLower
当我尝试创建我的容器(即“container([B()])”)时,vscode 中的 pylance 说类型不兼容。当我试图说“stuff”是一个 List[thing_co] 时,pylance 报告“TypeVar“thing_co”在此上下文中没有任何意义”。
我觉得我正在尝试做的事情非常简单,但我无法让类型检查器接受这个非常标准的公式。谁能建议如何让类型检查器屈服于我的意愿?谢谢
我的问题是 pylance 与数据类装饰器交互。通过指定我自己的初始化函数解决了这个问题。