python高级编程 ------元类(1)

来源:互联网 发布:东方财富网 for mac 编辑:程序博客网 时间:2024/06/05 05:39
在python中,几乎所有一切都是对象。


负责生成其他类的类就是元类(Metaclass)。


类与对象:


类与类的实例关系(可以继承)


1、类定义了其实例的属性和行为;


2、类可以作为创建实例的工厂。


实例化Type类
        
直接使用type


type类是内置类(默认元类)


其他类对象的默认类。


可以直接通过type创建类接收参数位置(name(类名称), bases(基类的元组), attrs(类中所有属性的字典))


bases后面要加逗号,告诉解释器将其作为元组


object是类继承链中的最高级,type也是元类层级的最高级。


自定义__new__方法:


一共有四个位置参数


第一个:元类自身


3个位置参数:
string类型的类名称;


bases的元组;




包含属性的字典attrs


自定义元类通常会重载__new__方法,但通常不会实现__init__方法




值得注意的是:  元类可以继承




使用元类:


在3中元类和基类声明在一起 关键字参数metaclass
calss C(metaclass=Meta):
    pass


等同于


class C(object, metaclass=Meta):
    pass




2:


class C(object):
    __metaclass__ = Meta




跨版本使用




使用six工具来进行跨版本的


第一种方法:


创建一个替代object类的虚拟类


import


class C(six.with_metaclass(Meta)):


   pass


第二种方法:


将元类赋给一个类,使用装饰器@six.add_metaclass.


import six


@six.add_metaclass(Meta):
    pass




2->3  six工具 明智


3->2  直接编写3代码。
原创粉丝点击