Как наследовать абстрактный класс и суперкласс для подкласса - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь наследовать как класс abstact суперкласса, так и суперкласс для подкласса.

Ниже приведен код, который я использую в качестве примера для

from abc import ABC, abstractmethod


class foo(ABC):

    def __init__(self):
        pass

    @abstractmethod
    def bar(self):
        pass

    def item(self):
        a = 1
        b = 2
        c = a + b
        print(c)


class bar_for_foo_mixin(foo):
    def __init__(self):
        foo.__init__(self)
    def bar(self):
        print("This should satisfy the abstract method requirement")
        self.item()

fo = foo()
temp = bar_for_foo_mixin(fo)
temp.bar()

. Выдает исключение, заявляющее:

Can't instantiate abstract class foo with abstract methods bar

Но если я перейду к подклассу, он будет отлично работать с приведенным ниже кодом.

from abc import ABC, abstractmethod


class foo(ABC):

    def __init__(self):
        pass

    @abstractmethod
    def bar(self):
        pass

    def item(self):
        a = 1
        b = 2
        c = a + b
        print(c)


class bar_for_foo_mixin(foo):
    def __init__(self):
        foo.__init__(self)
    def bar(self):
        print("This should satisfy the abstract method requirement")
        self.item()


class myfoo(bar_for_foo_mixin):
    def __init__(self):
        print("myfoo __init__ called")
        self.bar()
        self.item()


obj = myfoo()

Не могли бы вы объяснить, куда я иду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...