@alekssamos
Программист любитель

Что такое Mixins?

Upd: Да, это как я и думал, просто нужно было порядок поменять, Вот так работает: class e(b, a):
Объясните, что такое Mixins, для чего нужны, где и когда используются и как они работают?
Я сначала думал, что это множественное наследование, но, похоже, я не прав?

# базовые классы:
class a: x = 5

class b(a): y = 10

# проверяем наследование:
class c(a):
    def __init__(self): print(self.x) # 5

class d(b):
    def __init__(self): print(self.y) # 10

# Я думал, что Mixins` работают так
class e(a, b):
    def __init__(self): print(self.x + self.y)
    # но возникла ошибка
    # TypeError: Cannot create a consistent method resolution
    # order (MRO) for bases a, b
  • Вопрос задан
  • 554 просмотра
Пригласить эксперта
Ответы на вопрос 2
@kyern
Быдлокодер без стажа
Вот довольно хорошее объяснение mixin "на пальцах".
Ответ написан
Комментировать
@o5a
class a:
    def __init__(self, x):
        self.x = x

class b:
    def out(self):
        print(f"*** {self.x} ***")

class e(a, b):
    pass

# у класса e появился метод out из mixin
x = e(5)
x.out()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы