python type與__metaclass__的使用
阿新 • • 發佈:2018-11-07
通過__metaclass__實現自定義列表add方法
1 class ListMetaclass(type): 2 """ 3 通過__metaclass__動態生成類,為新生成的類新增add方法 4 """ 5 6 def __new__(cls, *args, **kwargs): 7 """ 8 :param args: args包含了三個引數具體如下: 9 args[0]: 呼叫ListMetaclass的類名,這邊為"MyList" 10 args[1]: 為MyList所繼承的父類,這邊為"(<type 'list'>,)"View Code11 args[2]: 為MyList類所包含的屬性與方法, {'__module__': '__main__', '__metaclass__': <class '__main__.ListMetaclass'>} 12 :param kwargs: 13 :return: 返回後必須將這三個引數全部返回 14 """ 15 args[2]["add"] = lambda List, value: List.append(value) 16 return type.__new__(cls, *args) 17 18 class MyList(list): 19 __metaclass__ = ListMetaclass 20 21 c = MyList() 22 c.add(10) 23 print c
列印結果如下: