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 my code:
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" :(
Obviously, there could be 3 ways to solve the issue
- Ignoring the issue with
# type: ignore
:toto.age = 10 # type: ignore #...
- Using
setattr
to set theage
oftoto
:setattr(toto, "age", 10)
- Setting the attributes explicitly (
self.age = 0
...)
However, I am looking for a more elegant and systematic way at the class level.
Any suggestion?