gpt4 book ai didi

python - Python 中的多态性和类型提示

转载 作者:行者123 更新时间:2023-12-05 05:51:20 24 4
gpt4 key购买 nike

考虑以下情况:

class Base:
...

class Sub(Base):
...

def get_base_instance(*args) -> Base:
...

def do_something_with_sub(instance: Sub):
...

假设我在上下文中调用 get_base_instance,我知道它会返回一个 Sub 实例 - 可能基于我的 args路过。现在我想将返回的实例传递给 do_something_with_sub:

sub_instance = get_base_instance(*args)
do_something_with_sub(sub_instance)

问题是我的 IDE 提示将 Base 实例传递给只接受 Sub 实例的方法。

我想我记得在其他编程语言中我只是将返回的实例转换为 Sub。我如何解决 Python 中的问题?根据返回类型有条件地抛出异常,还是有更好的方法?

最佳答案

我认为您从选角的角度考虑是在正确的轨道上。我们可以使用 typing 中的 cast 来阻止 IDE 报错。例如:

from typing import cast


class Base:
pass


class Sub(Base):
pass


def get_base_instance(*args) -> Base:
return Sub()


def do_something_with_sub(instance: Sub):
print(instance)


sub_instance = cast(Sub, get_base_instance())
do_something_with_sub(sub_instance)

关于python - Python 中的多态性和类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70393863/

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