1. 程式人生 > >python type與__metaclass__的使用

python type與__metaclass__的使用

通過__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'>,)"
11 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
View Code

列印結果如下: