<分区>
我已经了解装饰器和混入的基础知识。装饰器在不改变同一类的其他对象实例的情况下向对象添加新功能,而混合是一种多重继承,用于从多个父类继承。
这是否意味着当您只需要修改单个对象实例时应该使用装饰器,而当您需要一个全新的对象类时应该使用混合?或者,还有什么我可能会遗漏的吗?两者在现实生活中的用例有哪些?
<分区>
我已经了解装饰器和混入的基础知识。装饰器在不改变同一类的其他对象实例的情况下向对象添加新功能,而混合是一种多重继承,用于从多个父类继承。
这是否意味着当您只需要修改单个对象实例时应该使用装饰器,而当您需要一个全新的对象类时应该使用混合?或者,还有什么我可能会遗漏的吗?两者在现实生活中的用例有哪些?
最佳答案
在我看来,当您有几个应该具有相同功能的不同类时,您需要混合。
使用 mixins 的好例子是 Django 的基于类的 View 。例如,您有几个不同的类:FormView、TemplateView、ListView。它们都有一个相似的功能:它们必须渲染模板。这些类中的每一个都有一个 mixin,它添加了模板渲染所需的方法。
另一个例子是,如果您需要为返回 JSON 结果的 API 添加一个类。它也可以从基类 View 继承。您只需跳过模板混入,并定义您需要的内容(并可能为 JSON 编码编写您自己的混入)。
此外,您可以覆盖 mixins 中提出的一些方法,这些方法允许您针对本地情况修改公共(public)代码的某些部分。都是关于 OOP 的,伙计!
长话短说:mixin 添加新功能。
装饰器用于修改现有功能。例如,如果您需要记录从您的类中的方法返回的内容。此处正确的选择是装饰器(添加到适当的方法)。
希望对您有所帮助。如果没有,请提问。我会更新我的回复。
关于Python:使用装饰器 v/s mixins?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30317965/