美文网首页编程
python进阶- 元类编程:type和object的理解

python进阶- 元类编程:type和object的理解

作者: Jayce_xi | 来源:发表于2019-03-25 18:37 被阅读0次

    本文基于python3

    0.引入

    元类就是深度的魔法,99%的用户应该根本不必为此操心。如果你想搞清楚究竟是否需要用到元类,那么你就不需要它。那些实际用到元类的人都非常清楚地知道他们需要做什么,而且根本不需要解释为什么要用元类。
    --Python界的领袖 Tim Peters

    1.困惑

    如果你还没看过元类编程,推荐你看完再来看这篇文章。
    来看这篇文章的童鞋都是在看完一部分python的元类编程后,产生了宇宙究极问题:到底是先有鸡还是先有蛋。我当时也十分纠结到底type和object谁是谁的爸爸。

    2.分析

    typeobject之间的关系:

    >>> object.__class__
    <type 'type'>
    

    以上说明object类是type元类的一个实例对象。

    >>> object.__bases__
    ()
    

    object这个类的父类为空,说明 object类已经处于继承链条的顶端,是所有类的父类。

    >>> type.__class__
    <type 'type'>
    

    说明type也是type实例出来的。

    >>> type.__base__
    <type 'object'>
    

    type的父类是object

    刚刚表达大致的关系如下(手残勿喷):

    type和object的关系 .jpg

    3. 总结

    • 在不考虑元类编程,也就是自定义元类的情况下,所有的类都是由type创造出来的。包括object
    • type创造了所有类,包括object
    • object是所有类的最高父类。
    • 对象的类型叫作类class,类的类型就称作元类 meta-class。是不是很像“爸爸的爸爸叫爷爷”?
      可以参考如下关系:
      python中对象的类型
      图片出处
      我们可以通俗的说是元类(默认是type)实例出了所有的类,类又实例出了对象。三个空格代表三种对象。自己的理解,如有问题可以联系我。

    4.相关文章推荐

    Python 的 type 和 object 之间是怎么一种关系?
    python 中type和object的关系
    Python中的元类是什么?
    Python 元类 (MetaClass) 小教程

    5. 推荐我的个人博客

    相关文章

      网友评论

        本文标题:python进阶- 元类编程:type和object的理解

        本文链接:https://www.haomeiwen.com/subject/wolbvqtx.html