Skip to content Skip to sidebar Skip to footer

Remove Error From Mypy For Attributes Set Dynamically In A Python Class

I am using mypy to check my Python code. I have a class where I set dynamically some attributes and mypy keep on complaining about it: error:'Toto' has no attribute 'age' This is

Solution 1:

I don't follow mypy well enough to know whether this is (still, or ever was) the ideal work around, but this issue and this part of the cheatsheet indicate that something like:

from typing import Any

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

    def __setattr__(self, name:str, value:Any):
        super().__setattr__(name, value)

toto = Toto("Toto")
toto.age = 10

Will allow you to do what you're doing without mypy complaining (which it does, just tested).

Any could be more restrictive, but the types will be checked on both setattr() and "traditional" obj.attr = ... calls, so heads up.


Post a Comment for "Remove Error From Mypy For Attributes Set Dynamically In A Python Class"