幕布斯7119047
2021-11-30 16:17:20
此代碼使用mypy的默認(rèn)調(diào)用進(jìn)行檢查:class A: myattr: strclass B(A): otherattr: str但兩者A().myattr并B().myattr引發(fā)屬性錯(cuò)誤:AttributeError: 'A' object has no attribute 'myattr'有沒有辦法讓mypy報(bào)告這個(gè)?這是 Python 3.7.2,mypy 0.670
2 回答

拉風(fēng)的咖菲貓
TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
我認(rèn)為目前的答案是否定的。
有一些關(guān)于在此處添加此功能的討論:
https://github.com/python/mypy/issues/4019
不過(guò)最近好像沒什么更新。如果您有一個(gè)強(qiáng)大的用例來(lái)做這件事,也許值得在那里發(fā)表評(píng)論,以及您希望看到什么錯(cuò)誤,即您希望錯(cuò)誤是您正在訪問(wèn)一個(gè)已初始化的變量還是該變量未在類 init 或 new 構(gòu)造函數(shù)?

慕神8447489
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
我發(fā)現(xiàn)我可以通過(guò)定義一個(gè)Protocol
而不是一個(gè)常規(guī)的超類來(lái)獲得大部分我想要的(在我的實(shí)際用例中):mypy
確實(shí)檢測(cè)在那里定義的未初始化的屬性。
添加回答
舉報(bào)
0/150
提交
取消