美文网首页
Python 中的 type object 和 class

Python 中的 type object 和 class

作者: DejavuMoments | 来源:发表于2018-11-21 11:51 被阅读5次

    理解 Python 中一切皆对象是如何做到的。

    a = 1
    print(type(a))
    # output: <class 'int'>
    print(type(int))
    # output: <class 'type'>
    

    1 通过 int 类生成了一个对象,而 int 类本身也是对象,由 type 类生成。

    type -> int -> 1
    type -> class - obj

    >>> a = 1
    >>> type(a)
    <class 'int'>
    >>> type(int)
    <class 'type'>
    >>> class Student:
    ...     pass
    ... 
    >>> stu = Student()
    >>> type(stu)
    <class '__main__.Student'>
    >>> type(Student)
    <class 'type'>
    

    object 是 Python 中所有类的基类,在层次上属于最顶层的类。

    type 本身也是一个类,同时 type 也是一个对象。type 的基类是 object。

    list 是一个类,同时也是一个对象,是 type 实例化的对象

    >>> type([])
    <class 'list'>
    >>> type(list)
    <class 'type'>
    
    >>> stu = Student()
    >>> type(stu)
    <class '__main__.Student'>
    >>> type(Student)
    <class 'type'>
    >>> type.__bases__
    (<class 'object'>,)
    >>> type(object)
    <class 'type'>
    >>> object.__bases__
    ()
    
    type、class、object 之间的关系

    体现了 Python 中一切皆对象的设计理念。通过将 类 作为对象,赋予类一定的灵活性,可以方便在运行时随时进行修改。

    object 是 type 的实例,而 type 也是继承自 object,所以 object 是所有类的基类。这形成了一个环,把自己都变成了自己的对象,使得一切皆对象的实现成为了可能。在此同时,也做到了一切都继承自 object。

    它能够把自己变成自己的对象,绝对能把其他的一切都变成自己的对象,因为它连自己都不放过。

    为什么自己能够实例化自己?如何实现?内部借助指针来实现。

    相关文章

      网友评论

          本文标题:Python 中的 type object 和 class

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