You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确抑制mypy的‘Name "__qualname__" not defined’错误

解决mypy报错‘Name "qualname" not defined’的规范方法

当在Python日志格式化器类中使用__qualname__时,mypy报错“Name "qualname" not defined”,可以用以下几种更规范的方式替代单纯的# type: ignore:

  • 显式标注__qualname__的类型
    在自定义格式化器类中显式声明__qualname__的类型,让mypy明确识别这个类属性:

    import logging
    
    class CustomFormatter(logging.Formatter):
        __qualname__: str
    
        def format(self, record: logging.LogRecord) -> str:
            record.class_name = self.__qualname__
            return super().format(record)
    
  • 使用精准的类型忽略注释
    若不想显式声明属性,可针对特定的“属性未定义”错误进行忽略,避免掩盖其他潜在问题:

    record.class_name = self.__qualname__  # type: ignore[attr-defined]
    
  • 针对特定模块配置mypy
    如果项目中多个类都需要使用__qualname__,可在pyproject.toml或mypy.ini中为目标模块单独禁用attr-defined错误:

    # pyproject.toml示例
    [[tool.mypy.overrides]]
    module = "your_project.log_formatters"
    disable_error_codes = ["attr-defined"]
    

    注意不要全局禁用该错误,否则会漏掉真正的属性未定义问题。

内容的提问来源于stack exchange,提问作者Shan Dou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:10:24