在“ Python编程 ”中,Mark Lutz
提到了“ mixins”
。我来自C / C ++ / C#
背景,以前没有听说过这个词。什么是mixin
?
在本示例的两行之间进行阅读(我已经链接了它,因为它很长),我认为这是使用多重继承来扩展类而不是“适当的”子类的一种情况。这是正确的吗?
为什么我要这样做而不是将新功能放入子类中?因此,为什么混合/多重继承方法比使用组合更好?
什么将mixin与多重继承分开?这仅仅是语义问题吗?
mixin
是一种特殊的多重继承。使用mixin
的主要情况有两种:
from werkzeug import BaseRequest
class Request(BaseRequest):
pass
如果我想添加接受标头支持,我会做到这一点
from werkzeug import BaseRequest, AcceptMixin
class Request(AcceptMixin, BaseRequest):
pass
如果我想创建一个支持接受标头,etag
,身份验证和用户代理支持的请求对象,则可以这样做:
from werkzeug import BaseRequest, AcceptMixin, ETagRequestMixin, UserAgentMixin, AuthenticationMixin
class Request(AcceptMixin, ETagRequestMixin, UserAgentMixin, AuthenticationMixin, BaseRequest):
pass
区别是细微的,但是在上面的示例中,mixin
类并不是独立存在的。在更传统的多重继承中,AuthenticationMixin
(例如)可能更像Authenticator
。也就是说,该类可能会设计为独立存在。
问题内容: 今天,我浏览了该站点上的一些问题,发现提到了 以单例模式使用的这种解决方案声称具有线程安全性的优点。 我从未使用过,并且使用Java编程已经有两年多了。显然,他们改变了很多。现在,他们甚至在自己内部提供了对OOP的全面支持。 现在为什么要在日常编程中使用枚举?为什么? 问题答案: 当变量(尤其是方法参数)只能从一小部分可能的值中取出一个时,应始终使用枚举。例如类型常量(合同状态:“永久
什么是Mixin Less中,允许你将一个类嵌入到另一个类中,被嵌入的类也可以看作变量。换句话说,你可以用一个类定义样式,然后把它当作变量,在另一个类中,只要引用变量的名字,就能使用它的所有属性, Less把这种特性称作 mixin,中文把翻译为“混入”或“混合”,其目的就是从现有的样式中添加属性。请看以下Less代码: .bordered { border-top: dotted 1px
mixin是什么? 今天在学习sass的时候遇到了mixin,看起来像个函数(为什么不直接叫函数呢?),通过指定一些参数产生一些声明,可以通过@include来引入这些声明。这样可以不用每次都写一些声明,只需要指定参数就可以了。 在学习js时也遇到过mixin,用于实现多重继承。 这两者是类似的吗(在一个规则中通过include来导入多个声明,看起来也像是多重继承)?mixin到底是一个什么概念呢
本文向大家介绍contextType是什么?它有什么用?相关面试题,主要包含被问及contextType是什么?它有什么用?时的应答技巧和注意事项,需要的朋友参考一下 定义当前组件要使用哪一个context
本文向大家介绍childContextTypes是什么?它有什么用?相关面试题,主要包含被问及childContextTypes是什么?它有什么用?时的应答技巧和注意事项,需要的朋友参考一下 childContextTypes用来定义context数据类型,该api从16.3开始已被废弃 使用方式
有人可以帮我理解吗 此语句是否正确:这意味着bcdc是Baseclass类类型,其值是Dervedclass对象类型?此外,这是什么意思,为什么一个对象会这样实例化,而不是让类类型与正在实例化的新对象相同,如? 为什么