Тип подсказки в метаклассах python3 - PullRequest
1 голос
/ 26 сентября 2019

предупреждение о типе начало появляться сегодня в некоторых моих кодах после того, как я обновил версию mypy, которую использовал.Похоже, литературы по этому вопросу не слишком много, поэтому надеюсь, что кто-то здесь может мне помочь!

У меня есть метакласс, определенный следующим образом ...

 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))
...