zoukankan      html  css  js  c++  java
  • 元类type

    自定义元类来创建类,也就是自定义的方法来创建类

    python中的类也是对象,是type类的对象

    在编译器运行到class Foo的时候自动运行Foo = type('Foo',{object,},{})来创建类对象并放入内存中

    下面的例子展示了实例创建的过程

     1 class MyType(type):
     2     def __init__(self, *args,**kwargs):
     3         type.__init__(self,*args,**kwargs)
     4         print('第一步:解释器执行到class Foo时,创建Foo类对象')
     5     def __call__(self, *args, **kwargs):
     6         print('第二步:foo = Foo("foo")时调用元类的__call__方法,在此方法中创建实例')
     7         #foo = Foo("foo") = MyType('Foo',(object,),{})()
     8         obj = self.__new__(self)
     9         print('第四步:实例创建完毕,执行实例的__init__方法')
    10         self.__init__(obj, *args, **kwargs)
    11         #返回实例,在外部赋值给foo
    12         return obj
    13 
    14 class Foo(object,metaclass=MyType):
    15     def __init__(self,name):
    16         self.name = name
    17     def __new__(cls, *args, **kwargs):
    18         print('第三步:返回实例')
    19         return object.__new__(cls)
    20 # 第一阶段:解释器从上到下执行代码创建Foo类
    21 # 第二阶段:通过Foo类创建obj对象
    22 foo = Foo('foo')
    23 print(foo)
    24 print(foo.name)
  • 相关阅读:
    vue 響應接口
    vue ajax
    vue混入
    vue動畫和過渡
    vue路由
    vue自定義指令
    python项目_使用极验验证码
    python项目_使用异步功能,celery
    python项目_集成短信发送功能
    python项目_redis使用
  • 原文地址:https://www.cnblogs.com/cx59244405/p/8470142.html
Copyright © 2011-2022 走看看