欢迎光临散文网 会员登陆 & 注册

Mixin 类到底 Mix 了啥?

2023-07-27 16:32 作者:Mr蓝珲  | 我要投稿

Mixin 是一个类,不单独使用,被用于混(Mix)入(in)到已有的类中,提供额外的方法。


为什么引入 Mixin 类?我认为其原因是我们要用一个已有的类,但是已有的类中又缺少一些方法,我们又不想去过多修改已有的类。怎么办? 定义一个 Mixin 类,把它混到已有的类中去。分清哪个是已有的类,哪个是 Mixin 类,比较重要。


Python 中的 Mixin


在下面的 Python 代码中, 已有的类是 Name,其只有一个初始化方法 __init__() 。 如何为 Name 提供比如将名字全部转为大写或小写的功能呢? 当然可以直接去修改 Name 这个类,手动添加方法。 可是,如果有时不方便去修改,那么就定义一个 Mixin 类,本例中叫做 MixinClass,让 Name 继承它就可以。 当然,这里还是小小修改了 Name, 即在 class Name 的后面添加了 (MixinClass)。

上面的类是 Mixin 类,下面的类是已有的类。 注意:MixinClass 没有初始化方法,但有 self。



JavaScript 中的 Mixin


JavaScript 也允许 Mixin,不过是混入一个对象(而非类)。在下面的 JavaScript 代码中, 通过 Object.assign() 函数将 mixinObject 对象中的两个方法复制到 Name.prototype 中,从而使得类 Name 获得了 allUpperCase() 与 allLowerCase() 方法。


注意:(1)mixinObject 是个对象,在 JavaScript 中,对象的属性可以是函数,其实 Python 也可以;(2)mixinObject 中有关键字 this。


JavaScript 与 Python 互通互鉴,Nice 。


Mixin 类到底 Mix 了啥?的评论 (共 条)

分享到微博请遵守国家法律