概述
error:"Toto" has no attribute "age"
这是我的代码:
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" :(
>忽略#type的问题:ignore:toto.age = 10 #type:ignore#…
>使用setattr设置toto的年龄:setattr(toto,“age”,10)
>显式设置属性(self.age = 0 …)
但是,我在课堂上寻找更优雅,更系统的方式.
有什么建议吗?
from typing import Any
class Toto:
def __init__(self,0)
def __setattr__(self,name:str,value:Any):
super().__setattr__(name,value)
toto = Toto("Toto")
toto.age = 10
如果没有mypy抱怨,你可以做你正在做的事情(它确实如此,只是经过测试).
任何可能更严格,但类型将在setattr()和“传统”obj.attr = …调用上检查,所以抬头.
总结
以上是编程之家为你收集整理的从mypy中删除Python类中动态设置的属性的错误全部内容,希望文章能够帮你解决从mypy中删除Python类中动态设置的属性的错误所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧