微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

允许可选属性的 Python 协议

如何解决允许可选属性的 Python 协议

假设我有一个协议 Foo

from typing import Protocol,Optional


class Foo(Protocol):
    val: Optional[int]

还有一个类似下面的函数

def func(obj: Foo) -> None:
    if obj.val is not None:
        print(obj.val)

我希望 ImplAImplB(如下所示)应该是 func 可接受的参数,因为 val: int 比 {{1} }.

val: Optional[int]

由于它不起作用,我必须定义 class ImplA: val: int class ImplB: val: Optional[int] a = ImplA() b = ImplB() func(a) # It works func(b) # Argument 1 to "func" has incompatible type "ImplB"; expected "Foo" 并取两个类的并集。但是,有没有一种方法可以构造一个协议,使得 Barval: Optional[int] 都可以在没有 val: int 的情况下被接受?

Union

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。