允许可选属性的 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 (将#修改为@)