У меня следующая проблема:
class A:
animal = 'gerbil'
def __init__(self):
self.result = self.calculate_animal()
def calculate_animal(self):
print(self.animal)
return self.animal
class B(A):
animal = 'zebra'
def __init__(self):
super(B, self).__init__()
Теперь я хочу, чтобы определенный набор подклассов из A реализовал новую функцию, которая вычисляет что-то другое для животного, например:
class CapitalizeAnimal:
def calculate_animal(self):
self.animal = self.animal.upper()
# I need to call some version of super().self.animal,
# but how will this Mixin class know of class A?
class C(A, #CapitalizeAnimal?):
animal = 'puma':
def __init__(self):
super(C, self).__init__()
Как мне заставить class C
реализовать CapitalizeAnimal
версию calculate_animal
, сохранив при этом ее животное как puma
?Я запутался в том, как класс Mixin сможет вызывать функцию super ().