[英]How to annotate mixin in Python
我有一个独立的函数,它使用super()
,并像这样使用它:
import typing
from abc import ABC
class Foo(typing.Protocol):
def foo(): raise NotImplementedError
def free_foo(child):
super(child.__class__, child).foo()
class Base(ABC):
pass
class Parent1(Base):
def foo(self): pass
class Child1(Parent1):
foo = free_foo
class Parent2(Base):
def foo(self): pass
class Child2(Parent2):
foo = free_foo
如何注释free_foo
函数? 我需要指出child
是Base
实例并遵守Foo
协议吗?
我发现父类的正确顺序可以解决问题:
from abc import ABC
class FooBase(Foo, Base, ABC):
pass
def foo(child: FooBase): pass
mypy 似乎对此很满意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.