Django的两个骗子,Daniel Roy Greenfeld和Audrey Roy Greenfeld为Django 1.8做的最佳做法。
第10.2段将Mixins与CBW一起使用:
Mixins应该继承Python的内置对象类型。
例如:
from django.views.generic import TemplateView
class FreshFruitMixin(object):
def get_context_data(self, **kwargs):
context = super(FreshFruitMixin, self).get_context_data(**kwargs)
context["has_fresh_fruit"] = True
return context
class FruityFlavorView(FreshFruitMixin, TemplateView):
template_name = "fruity_flavor.html"
我无法理解这个想法。我们为什么要继承对象?我们不能写这样的东西吗?
class ClassNameMixin:
<statement-1>
这将是相同的。所以,我无法理解为什么继承对象在这里很重要。
然后,mixin执行某些操作。它能否继承一些富有成效的课程?
答案 0 :(得分:2)
此注释适用于Python2,其中,如果未指定任何基类,则会创建old-style class,并且MRO和super()将不起作用,这对于多重继承至关重要。
在Python3中,没有旧式类,每个类/类型(间接)都继承自object
。
我也相信从其他类继承mixins没有任何问题。这只是多重继承,所有规则和陷阱都适用。所以,有问题的评论可以是:
Mixins应该(间接)继承Python的内置对象类型。
有时也建议即使在Python3中显式继承object
(即不要将基类列表留空),也要使代码与Python2兼容。