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

打印结果如下:

猜你喜欢

转载自www.cnblogs.com/grub007/p/9924009.html