我以为我意识到了这个关系:在Python中一切都是对象,每个对象都有一个类型。但是类(class)呢?类是对象的蓝图,对象是类的实例。但我读过in an article在 Python 中,类本身就是对象。我认为一个对象不能没有它的蓝图——它的类。但是,如果类是一个对象,它如何存在?
>>> type.__bases__
(<class 'object'>,)
>>> int.__bases__
(<class 'object'>,)
>>> str.__bases__
(<class 'object'>,)
所以,object 类是每个对象的蓝图?
>>> type(str)
<class 'type'>
>>> type(int)
<class 'type'>
>>> type(type)
<class 'type'>
所以,type 类是所有其他类型的蓝图?
但是 type 本身就是一个对象。我不明白这。我无法想象类是对象。
请您参考如下方法:
在 Python 中,任何可以命名的东西都是对象——包括函数、类和元类。每个对象都有一个关联的 type 或 class(这是同一事物的两个名称——“type”和“class”在 Python 3 中是相同的)。类型本身又是一个对象,并且本身有一个关联类型。类型的类型称为元类(当然,也可以称为元类型,但未使用后一个词)。您可以使用 type() 来确定对象的类型。如果你反复查询一个对象的类型,它的类型等等,你总是会在某个时候得到类型type,通常在两个步骤之后:
type(3) # --> int
type(int) # --> type
type(type) # --> type
另一个例子,使用“元元类”:
class A(type):
pass
class B(type, metaclass=A):
pass
class C(metaclass=B):
pass
c = C()
type(c) # --> C
type(C) # --> B
type(B) # --> A
type(A) # --> type
type(type) # --> type
type 本身是 type 类型并不矛盾。
