gpt4 book ai didi

python - 打字界面

转载 作者:行者123 更新时间:2023-12-03 14:32:25 24 4
gpt4 key购买 nike

在 python 3 中键入“接口(interface)”的正确方法是什么?

在以下示例中:

class One(object):
def foo(self) -> int:
return 42


class Two(object):
def foo(self) -> int:
return 142


def factory(a: str):
if a == "one":
return One()

return Two()

输入 factory 的返回值的正确方法是什么?功能?

它应该类似于“具有一个名为 foo 的单一方法的类型,它不接受任何参数并返回一个整数”。

但不确定我能找到如何做到这一点。

更新 : 这个问题是 专属 打字。

最佳答案

您可以使用 typing.Union但是,听起来你真的想要结构类型不是名义上的。 Python supports this using typing.Protocol ,这是 python 类型提示系统支持的部分,所以 mypy会明白的,例如:

import typing

class Fooable(typing.Protocol):
def foo(self) -> int:
...

class One(object):
def foo(self) -> int:
return 42


class Two(object):
def foo(self) -> int:
return 142


def factory(a: str) -> Fooable:
if a == "one":
return One()

return Two()

x = factory('one')
x.foo()

请注意,结构类型非常适合 Python 的鸭式类型。 Python 的类型系统支持结构形式和名词形式。

关于python - 打字界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60330730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com