5

何かを行う親クラスと、直交する方法でメソッドをラップする 2 つの子クラスがあります。2 つの子クラスを結合しようとすると、mypy で次のエラーが発生します。

基本クラス「Foo」の「run」の定義は、基本クラス「Bar」の定義と互換性がありません

2 つのクラスはどのように「互換性がない」のですか? 作らなくてもいいの?

class Parent:
    def run(self, a, b):
        pass


class Foo(Parent):
    def run(self, a, b, foo=None, **kwargs):
        print('foo', foo)
        super().run(a, b, **kwargs)


class Bar(Parent):
    def run(self, a, b, bar=None, **kwargs):
        print('bar', bar)
        super().run(a, b, **kwargs)


class C(Foo, Bar):
    pass
4

2 に答える 2