为什么两种类型的联合列表不能扩展到这两种类型的列表的联合?
当组合 list 和 Union 类型时,我一直在用 mypy 努力挣扎。我现在知道答案,但想在这里记录我的发现。问题是:为什么两种类型的联合列表不扩展到这两…
我如何让Mypy告诉我我正在使用不支持较旧版本的功能?
例如,使用 3.9 之前的 Python 版本执行此代码将引发异常: from concurrent.futures import Future f: Future[int] 类型错误:“类型”对象不可订阅 …
当输入和输出中有多种类型但它们之间具有一对一关系时的类型提示
我有以下代码: AnyTypeEnum = TypeVar("AnyTypeEnum", Type[Enum], Type[IntEnum]) AnyEnum = TypeVar("AnyEnum", Enum, IntEnum) def decode(value:…
如何让 Mypy 识别不可为 null 的 ORM 属性?
mypy Infers ORM不可删除的实例属性作为选项。 文件名: test.py from sqlalchemy.orm import decl_api, registry from sqlalchemy import BigInteger…
给Mypy开心的抽象班级构造函数的正确方法是什么?
我有一个抽象基类 BsaeFoo,我的数据类(例如 ChildFoo)继承自它。 from abc import ABCMeta from typing import Dict, Any, TypeVar, Type from dat…
如何注释函数生成数据类?
假设您想像这样包装 dataclass 装饰器: from dataclasses import dataclass def something_else(klass): return klass def my_dataclass(klass): ret…
Python:重载魔术方法“__str__”和“__repr__”的返回类型
我有一个自定义枚举类,在调用 __str__ 或 __repr__ 时只能返回一组特定的字符串文字。鉴于这些序列化字符串文字有时用作其他函数的输入(并且这些输…
如何在 NamedTuple 中键入函数属性
我有一段像 from typing import Callable, NamedTuple, TypeVar def f1(x: int) -> int: return x def f2(y: str) -> int: return len(y) T = TypeVar…
如何输入一个接受类或类实例并返回该类实例的函数?
我想输入一个可以采用类类型或类实例的函数,然后返回同一类的实例。例如: from typing import Type, TypeVar, Union DT = TypeVar("DT") def tmap(d…
Python liskov替换原理及自定义init
我正在编写带有提供异步初始化的自定义初始化函数的类。这一切都运行良好,除了当我创建子类并覆盖 async init 函数时,mypy 告诉我我违反了 liskov …
Mypy:转换元组值
def my_function(key, parameters: tuple[int | str, ...] | tuple[MyClass, ...]) -> None if key == "id": parameters = tuple(map(int, parameters…
我如何使用 @property setters 并使 mypy 高兴?
我有以下 example.py 文件: class Location(object): def __init__(self, latitude, longitude): self.latitude = latitude self.longitude = longit…
如何注释自定义类型 __iter__ 以正确指示非统一返回类型?
我有一个自定义类型,我想启用它的值解包(元组解包等)。我知道在 Python 中执行此操作的最简单方法是实现 __iter__ 。这在运行时效果很好,但我想提…
mypy 应该从 Union 选项推断类型吗?
在下面的代码中, fn_int 只会以 int 作为参数来调用,但 mypy 抱怨我可能会向它传递一个 str (fn_str 反之亦然)。 我在这里缺少什么吗? 在将参数…