Множественное наследование Python / Mixin

У меня следующая проблема:

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__()

Как мне получить класс C для реализации CapitalizeAnimal версии calculate_animal , сохраняя при этом его животное как пума ? Я не понимаю, как класс Mixin сможет вызывать функцию super ().

6
задан atp 19 August 2011 в 19:29
поделиться