首页 > 解决方案 > 枚举 auto() 值上的 Mypy 错误

问题描述

我有这个用于自动命名枚举的类。

class AutoNameEnum(Enum):
    def _generate_next_value_(name, start, count, last_values):
        return name

这直接取自enums 上的 Python 文档

用法是这样的

class Priority(AutoNameEnum):
    LOW = auto()
    HIGH = auto()

priority = Priority.LOW

这一切都很好,mypy 了解这里的一切。但是当我尝试放入AutoNameEnum一个单独的包时,我得到了一个错误。具体来说,这

from utilities import AutoNameEnum

class Priority(AutoNameEnum):
    LOW = auto()
    HIGH = auto()

priority = Priority.LOW

结果是

参数“priority”的默认不兼容(默认类型为“auto”,参数类型为“Priority”)

这个 mypy 错误是什么意思,为什么它只在我从不同的包中导入类时发生?

标签: pythonenumsmypy

解决方案


auto这实际上与or无关Enumpy.typed我只需要通过添加一个名为包根的文件来表明我的包是键入的。没有它,mypy 不会扫描包的类型。


推荐阅读