python外掛方式mixin和monkey-patching
#http://abloz.com #author:ablozhou #date:2012.3.31
python可以用mixin方式做外掛。limodou著名的ulipad python編輯器就採用這種外掛機制。mixin是一個類,該類的一些屬性和方法,可以傳給繼承的類。一些支援多繼承的面向物件指令碼語言,可以將某種屬性採用多繼承方式,讓一個繼承類具有mixin類的屬性和方法。據維基百科所說,最早使用mixin的是lisp的擴充套件語言flavor。支援的指令碼語言也相當多,如ruby,javascript等。參考《Mixin 掃盲班》賴勇浩blog.csdn.net/lanphaday/article/details/1656969
但有人反對採用mixin機制,因為多繼承會引起
monkey-patching 不知為何叫這名字,“猴子補丁”?估計有其文化來源。但具體意思是一種在動態語言中修改執行程式碼的方式,如Smalltalk, JavaScript, Objective-C, Ruby, Perl, Python, Groovy等語言,不必修改原始程式碼。
gevent的非同步socket,就採用猴子補丁。
from gevent import monkey
monkey.patch_all()
具體打猴子補丁方式: #module ma class A: def do_sth(self): pass
import ma class MonkeyPatchA: def do_sth(self): pass
ma.A = MonkeyPatchA
這樣將類替換掉了。 參考: http://www.yosefk.com/blog/machine-code-monkey-patching.html http://www.python.org/getit/releases/2.3/mro/ http://blog.csdn.net/lanphaday/article/details/1656969
如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源