2005年11月09日 星期三 13:52
《python编程宝典》里面把mixin用在多继承里面,我理解的意思是这样: class A: def a(): pass def ..... ...... class iMixin: def b(): pass class B (iMixin,A):pass 然后结果就是 class B中既有了A的成员,方法,又有了iMinin类的, 这样的话,这个所谓的mixin与C++等oo语言的多继承有什么不同呢? 另外,fred.li.1979.m.bj.prc at gmail.com的理解中 你执行 newbie1().data_attribute = "com1" 之后newbie1类动态的改变了,但这对MixinBase有什么影响呢? 现在的MixinBase里面应该还是只是个 pass 吧? 类似的 newbie2().method_attribute(1,2) 对MixinBase基类有什么影响啊?? 看起来就是两继承了MixinBase的类,在运行时动态的改变了本身而已啊? 请教..... > > 我理解的Mixin > > class MixinBase:pass > > class newbie1(MixinBase):pass > > class newbie2(MixinBase):pass > > newbie1().data_attribute = "com1" > > def f(self,b,c): > > newbie2().method_attribute = f > > newbie2().method_attribute(1,2) > > > > Plugin > > > > ?木头给个简单的例子 > > > > 插入点识别机制 > > > > ?木头给个简单的例子 > > 我的另一封邮件写了一个例子。简单点说: > > mixin是一类技术,我分为Mixin与Plugin两类。 > > Mixin是对原类的属性或方法:增加、替换或合并。对于方法只能替换。 > Plugin是对原类某个方法嵌入新代码。因此Plugin只有方法,没有其它类型的对象。 > -- 原来如比!!这里的Plugin 不是通常软件中的插件开发, 普通的插件是指利用给出的API 开发可以与原软件合作的小部件,软件; newEdit 中的Plugin 不过是种名称,是种浅度mixin 的扩展行为,是也乎!? 这样的话,不如使用比较容易理解的说明方式?! newEdit 中广泛使用了 mixin 思想,所有功能通过两种行为进行开发和扩展: 1. Mix -- 对预设类的全面混入定制,增加、替换或合并属性或方法 2. Embed -- 对预设类的方法嵌入定制,增加、替换或修改原始方法 是也乎!?这样比较明了的说?! -- # Time is unimportant, only life important! ## 面朝开源,我心自由!
2005年11月09日 星期三 15:02
在 05-11-9,Du Jun<jdu at haiercct.com.cn> 写道: > 《python编程宝典》里面把mixin用在多继承里面,我理解的意思是这样: > class A: > def a(): > pass > def ..... > ...... > > class iMixin: > def b(): > pass > > class B (iMixin,A):pass > > 然后结果就是 > class B中既有了A的成员,方法,又有了iMinin类的, > 这样的话,这个所谓的mixin与C++等oo语言的多继承有什么不同呢? > 这种看上去就是C++的多重继承。如果称之为mixin的话,我想原因是: mixin的类本身是没有什么意义的,它必须与某个目标类结合才行,比如说直接使用目标类的属性,方法什么的,就是一些通用代码写成了类的型式。因此与独立功能的类有所区别。 > > 另外,fred.li.1979.m.bj.prc at gmail.com的理解中 > 你执行 > newbie1().data_attribute = "com1" > 之后newbie1类动态的改变了,但这对MixinBase有什么影响呢? > 现在的MixinBase里面应该还是只是个 pass 吧? > 类似的 > newbie2().method_attribute(1,2) > 对MixinBase基类有什么影响啊?? > 看起来就是两继承了MixinBase的类,在运行时动态的改变了本身而已啊? > 请教..... > 上面的例子可能并不合适,Mixin更多的是对类起作用,而不是类的实例。 -- I like python! My Blog: http://www.donews.net/limodou NewEdit Maillist: http://groups.google.com/group/NewEdit
Zeuux © 2025
京ICP备05028076号