zoukankan      html  css  js  c++  java
  • python 中type和object的关系

    转自:https://segmentfault.com/a/1190000008938763

    学习python的同学都知道这么几句话

    • object类是所有新式类的父类。

    • type是所有类的类。

    那么type和object是什么关系呢?
    object是一个新式类,我们可以通过object.__class__object.__bases__来获取object所属的类核他的父类。

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

    这说明 object类是一个type元类的实例。这与type是所有新式类的类这一说法相符合。

    >>> object.__bases__
    ()

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

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

    这说明type自身的类就是type。就是说type元类也就是由type自身创建的。

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

    这就是说type这一元类的父类是object。

    我们来捋一捋,也就是说:
    object类是由元类type创建的,但是type类又继承了object类。 type元类的类则是由type元类自身创建的。

    我们把python中的内置类和用户创建的内纳入其中,我们就可以画出一下关系图
    图片描述

    简单说明一下出了type和object关系的其他部分。
    int、float、str、boolean、tuple、dict、set等内置的数据类型其实也就是内置的类。
    type是一个比较特殊的类,他是所有类的类。所以估计要与int等这种类保持一致,所以也是小写的?

    我们日常在程序中创建的具体的整数, 浮点数、字典、元祖等就是上面int、float、boolean等的实例。

    我们写代码的创建的自定义类分两种,一种是新式类,一种是经典类。
    新式类的类都是type,它的最终父类是object。
    经典类的创建者,也是是经典类的类是一个叫classobj的东西,classobj的类才是type。

    以上文字仅基于自己的理解。有错误还请指正。

  • 相关阅读:
    Linux 命令
    g++/gcc
    emacs lisp
    vim 快捷键
    emacs快捷键
    Valgrind 例子
    Valgrind
    gprof
    cppcheck
    gdb常用命令
  • 原文地址:https://www.cnblogs.com/acSzz/p/11111944.html
Copyright © 2011-2022 走看看