Это вопрос о Python Mixins, который может быть полезен вообще. Я просто использую модели Django, так как это наиболее подходящий вариант использования.
Должен ли mixin наследовать от класса, который он предназначен для смешивания с или из объекта?
Примеры по коду, правильнее или лучше, или лучше, в зависимости от того, чего вы хотите достичь?
Это
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)
Я думаю, что наследование объекта является правильным. Но я вижу примеры первого случая по всей сети...
РЕДАКТИРОВАТЬ: Я переместил свой следующий вопрос на отдельный вопрос: Django Abstract Models против простых Python mixins vs Python ABC