Skip to main content
 首页 » 编程设计

python之Python 3 中对象和类的关系

2025年05月04日15sxdcgaq8080

我以为我意识到了这个关系:在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 类型并不矛盾。