如何正确抑制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
相关产品推荐
相关产品推荐

