Python 中的 type object 和 class

2018-11-21  本文已影响5人  DejavuMoments

理解 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。

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

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

上一篇下一篇

猜你喜欢

热点阅读