Це питання про міксини Python, яке може бути корисним загалом. Я просто використовую моделі Django, оскільки це той варіант використання, який мені найбільш відомий.
Чи повинен міксин успадковуватись від класу, який він призначений для змішування з або від 'об'єкта'?
Приклади за кодом, що є правильнішим чи кращим чи кращим залежно від того, чого ви хочете досягти?
Це
class TaggingMixin(models.Model):
tag = models.ForeignKey(Tag)
class Meta:
abstract = True
class MyModel(models.Model, TaggingMixin):
title = models.CharField(max_length=100)
Або це:
class TaggingMixin(object):
tag = models.ForeignKey(Tag)
class Meta:
abstract = True
class MyModel(models.Model, TaggingMixin):
title = models.CharField(max_length=100)
Я думаю, що успадкування від об’єкта - це правильний шлях. Але я бачу приклади першого випадку по всій мережі ...
EDIT: Я переніс своє подальше запитання на окреме питання: Django Abstract Models vs simple Python mixins vs Python ABCs
TypeError: Cannot create a consistent method resolution order (MRO). Робітьclass MyModel(TaggingMixin):замість цього. Див stackoverflow.com/q/29214888/1627479