xxl520 发表于 2015-12-3 09:40:29

python 元类与定制元类

  1:元类
  元类:类的创建与管理者
  所有类的元类是type



  class a:
  pass
  print(type(a))
  结果:<class 'type'>
  
  2:定制元类
  类的实例化过程:(可看类的基础与要点)
  1)调用__new__()创建实例
  2)调用__init__()初始化上面创建出来的实例
  所以:定制实例便是改变父类的__new__()或__init__()方法
  例子:



1 class MyMeta(type):
2   def __init__(self,name,bases,dicts):
3         print('Init Instance.')
4
5   def __new__(cls,name,bases,dicts):
6         dicts['info'] = lambda self:print('Djx.')   #追加实例方法info()
7         res = type.__new__(cls,name,bases,dicts)    #调用父类type的new方法实例化实例
8         res.company = 'MaiZi'                     #追加属性
9         return res                                  #返回实例
10
11 class custom(metaclass=MyMeta):                     #用关键字表明元类不是type而是MyMeta
12   pass
13
14 if __name__ == '__main__':
15   cus = custom()
16   cus.info()
17   print(cus.company)
18
19
20 #Python2.x的写法
21 #class cus:
22#   __metaclass__ = MyMeta
23   #pass
  运行结果:    
  Init Instance.
      Djx.
      MaiZi
页: [1]
查看完整版本: python 元类与定制元类