如何解决组合类中的类和子类的python类型提示
我基本上是这样做的:
@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 表示类型不兼容。当我试图说“东西”是一个 List[thing_co] 时,pylance 报告“TypeVar“thing_co”在这种情况下没有意义”。
我觉得我想要做的事情非常简单,但我无法让类型检查器接受这个非常标准的公式。谁能建议如何根据我的意愿弯曲类型检查器?谢谢
解决方法
对我来说,问题是 pylance 与数据类装饰器的交互。它是通过指定我自己的 init 函数解决的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。