相关疑难解决方法(0)

从mypy中删除Python类中动态设置的属性的错误

mypy用来检查我的Python代码.

我有一个类,我动态设置一些属性,并mypy继续抱怨它:

error:"Toto" has no attribute "age"
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

class Toto:
    def __init__(self, name:str) -> None:
        self.name = name
        for attr in ['age', 'height']:
            setattr(self, attr, 0)


toto = Toto("Toto")
toto.age = 10  # "Toto" has no attribute "age" :(
Run Code Online (Sandbox Code Playgroud)

显然,可以有3种方法来解决这个问题

  1. 忽略问题# type: ignore:toto.age = 10 # type: ignore #...
  2. 使用setattr设定agetoto:setattr(toto, "age", 10)
  3. 明确设置属性(self.age = 0...)

但是,我在课堂上寻找更优雅,更系统的方式.

有什么建议吗?

python mypy

6
推荐指数
1
解决办法
485
查看次数

标签 统计

mypy ×1

python ×1