如何编写返回动态导入类的函数的类型?

问题描述 投票:0回答:1

我有一个看起来像这样的Python函数

def my_function() -> Any:
  from optional_dependency import SomeClass
  # This will fail if `optional_dependency` is not installed, I'm good with that.
  return SomeClass()

我不是这个功能的超级粉丝,但我继承了它并且我无法破坏它(目前还不能)。我想知道是否有比

Any
更好的返回类型。

Pyright 抱怨我是否写作

  • -> SomeClass
  • -> "SomeClass"

如果我写的话,拉夫就会抱怨

  • -> "SomeClass": # type: ignore

有什么可以让 Pyright 和 Ruff(最好是 mypy)都开心吗?

python python-typing mypy pyright ruff
1个回答
0
投票
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from optional_dependency import SomeClass

def my_function() -> "SomeClass":
  from optional_dependency import SomeClass
  return SomeClass()

如果您使用过

from __future__ import annotations
,通常可以跳过引号。另请参阅https://mypy.readthedocs.io/en/stable/runtime_troubles.html

© www.soinside.com 2019 - 2024. All rights reserved.