如何输入提示 Python 3 元类?

问题描述 投票:0回答:1

在升级我正在使用的 mypy 版本后,今天我的一些代码中开始出现类型警告。关于这个主题的文献似乎不多,所以希望有人能帮助我!

我有一个元类定义如下...

 from __future__ import annotations


 class MyMetaClass(type):                                                                                                                                
                                                                                       
     def __new__(mcs,                                                                  
                 name: str,                                                            
                 bases: Tuple[type, ...],                                              
                 namespace: Dict[str, Any],                                                                                     
                 ) -> MyMetaClass:                                             
                                                                                       
         # Custom code... doesnt matter
         # ...
         # ...
                                                                                                                                                                                                    
         return type.__new__(mcs, name, bases, namespace)

今天,mypy 开始吐出以下错误...

error: Incompatible return value type (got "type", expected "MyMetaClass")

我尝试了以下返回语句的迭代,但都没有成功......

return super().__new__(mcs, name, bases, namespace)
return super(MyMetaClass, mcs).__new__(mcs, name, bases, namespace)

关于如何绕过此警告有什么建议吗?我最终决定选一个演员……但感觉必须有更好的东西。

return cast(MyMetaClass, super().__new__(mcs, name, bases, namespace))
python python-typing mypy
1个回答
0
投票

问题是你没有注释

mcs
参数,所以无法知道
super().__new__
会返回什么类型。

© www.soinside.com 2019 - 2024. All rights reserved.