您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

5b51 2022/1/14 8:21:32 python 字数 2365 阅读 497 来源 www.jb51.cc/python

我正在使用mypy检查我的Python代码.我有一个类,我动态设置一些属性,mypy继续抱怨它:error:'Toto' has no attribute 'age' 这是我的代码:class Toto: def __init__(self, name:str) -> None: self.name = name

概述

我正在使用mypy检查我的Python代码.

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

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" :(

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

>忽略#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类中动态设置的属性的错误所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶