Python:使用装饰器v/s mixins? [关闭]
Posted
技术标签:
【中文标题】Python:使用装饰器v/s mixins? [关闭]【英文标题】:Python: Use of decorators v/s mixins? [closed] 【发布时间】:2015-07-30 19:53:49 【问题描述】:我已经了解了装饰器和混入的基础知识。装饰器在不更改同一类的其他对象实例的情况下向对象添加新功能,而混合是一种用于从多个父类继承的多重继承。
这是否意味着当您只需要修改单个对象实例时应该使用装饰器,而当您需要一个全新的对象类时应该使用 mixins。或者,还有什么我可能会遗漏的东西吗?两者在现实生活中都有哪些用例?
【问题讨论】:
这是一个很好的问题,我很想知道答案,但不幸的是它将被关闭,因为它不在 *** 的范围内。那是因为它“主要基于意见”——这是结束问题的主要原因。 ***.com/help/search?q=opinion 【参考方案1】:在我看来,当您有几个不同的类应该具有相同的功能时,您需要 mixins。
使用 mixin 的好例子是 Django 的基于类的视图。例如,您有几个不同的类:FormView、TemplateView、ListView。它们都有一个相似的功能:它们必须渲染模板。这些类中的每一个都有一个 mixin,它添加了模板渲染所需的方法。
另一个例子是,如果您需要为返回 JSON 结果的 API 添加一个类。它也可以从基类 View 继承。您只需跳过模板 mixin,并定义您需要的内容(并且可能为 JSON 编码编写自己的 mixin)。
此外,您可以覆盖 mixins 中提出的一些方法,这些方法允许您针对本地案例修改公共代码的某些部分。这都是关于 OOP 的,伙计!
长话短说:mixins 添加了新功能。
装饰器用于修改现有功能。例如,如果您需要记录从类中的方法返回的内容。这里正确的选择是装饰器(添加到适当的方法中)。
希望对您有所帮助。如果没有,请提出问题。我会更新我的回复。
【讨论】:
以上是关于Python:使用装饰器v/s mixins? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章