码迷,mamicode.com
首页 > Web开发 > 详细

面向对象————类的创建过程 metaclass

时间:2018-05-07 19:40:45      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:代码   inf   AC   解释   __init__   return   过程   http   new   

 1 # __author: Administrator
 2 # __date: 2018/5/7
 3 class MyType(type):
 4     def __init__(self, what, bases=None, dict=None):#self->foo类
 5         super(MyType, self).__init__(what, bases, dict)
 6     def __call__(self, *args, **kwargs):# 当对象()时直接调用 self->foo
 7         obj = self.__new__(self, *args, **kwargs)
 8         self.__init__(obj)
 9 
10 class Foo(object,metaclass=MyType):
11     def __init__(self, name):
12         self.name = name
13     def __new__(cls, *args, **kwargs):#cls 类名  __new__是创建对象   cls代表的就是foo
14         return object.__new__(cls, *args, **kwargs)
15 # 第一阶段:解释器从上到下执行代码创建Foo类
16 # 第二阶段:通过Foo类创建obj对象
17 obj = Foo()

流程图:

技术分享图片

 

面向对象————类的创建过程 metaclass

标签:代码   inf   AC   解释   __init__   return   过程   http   new   

原文地址:https://www.cnblogs.com/janus1345/p/9003877.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!