Я пытаюсь наследовать как класс 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()
Не могли бы вы объяснить, куда я иду?