作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下情况:
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/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!