美文网首页编程
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的理解

    本文基于python3 0.引入 元类就是深度的魔法,99%的用户应该根本不必为此操心。如果你想搞清楚究竟是否需要...

  • python之理解super及MRO列表

    python之理解super type 类。 object-or-type 类,一般是 self。 1、super...

  • Python元类MetaClass

    上文Python中object和type的关系中我们提到元类的概念。type就是最大的一个元类。在这里,我们详细介...

  • Pytorch搭建网络

    面向对象编程 类 面向对象编程——类class和对象object class是一种类型(Type),object是...

  • Python 类、元类小实验

    理解python的类实例化class type(name, bases, dict)官方定义object.__ne...

  • Python元类编程(type)

    一、类是如何产生的 表面上使用继承创建一个类 所有类都直接或间接继承于object而真正创建类的是type typ...

  • python进阶:面向对象是什么意思?

    python是一门面向对象的语言,体现面向对象的技术就是类。想要在python编程上进阶,就必须理解和运用类来解决...

  • python笔记(九)类

    python3 中所有类都是继承自 object,包括 type。type 是所有类对象的模版,比如 isinst...

  • 10.元类

    元类的对象是类type是python的内建元类 自定义元类:

  • Python中type和object类的关系

    源码分析 可以简单的看得,object是type的父类,那么type是继承object基类的。 简单的输出 那么说...

网友评论

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

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