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

Python 3中对象和类之间的关系,python,class,oop,object,types,Python,Class,Oop,Object,Types,我想我意识到了这种关系:在Python中,所有东西都是一个对象,每个对象都有一个类型。但是上课呢?类是对象的蓝图,对象是类的实例。但我在Python中读到过,类本身就是对象。我认为一个对象如果没有它的蓝图——它的类,就不可能存在。但是,如果类是一个对象,它如何存在呢 >>> type.__bases__ (<class 'object'>,) >>> int.__bases__ (<class 'object'>,) >>&

我想我意识到了这种关系:在Python中,所有东西都是一个对象,每个对象都有一个类型。但是上课呢?类是对象的蓝图,对象是类的实例。但我在Python中读到过,类本身就是对象。我认为一个对象如果没有它的蓝图——它的类,就不可能存在。但是,如果类是一个对象,它如何存在呢

>>> type.__bases__
(<class 'object'>,)
>>> int.__bases__
(<class 'object'>,)
>>> str.__bases__
(<class 'object'>,)
那么,类类型是所有其他类型的蓝图


但类型本身就是一个对象。我不能理解这一点。我无法想象类是对象。

在Python中可以命名的所有东西都是对象,包括函数、类和元类。每个对象都有一个关联的类型或类——这是同一事物的两个名称——类型和类在Python3中是相同的。类型本身又是一个对象,并且自身具有关联的类型。类型的类型被称为元类,当然,它也可以被称为元类型,但不使用后一个词。可以使用类型来确定对象的类型。如果以迭代方式查询对象的类型、其类型的类型等,通常在两个步骤之后,您总会在某个时间点得到类型:

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

类型本身就是类型本身并不矛盾。

在Python中可以命名的所有东西都是对象,包括函数、类和元类。每个对象都有一个关联的类型或类——这是同一事物的两个名称——类型和类在Python3中是相同的。类型本身又是一个对象,并且自身具有关联的类型。类型的类型被称为元类,当然,它也可以被称为元类型,但不使用后一个词。可以使用类型来确定对象的类型。如果以迭代方式查询对象的类型、其类型的类型等,通常在两个步骤之后,您总会在某个时间点得到类型:

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

类型本身就是类型本身并不矛盾。

我想我理解:类和对象在python中是两个平行的东西:每个对象都有它的类类型,每个类都是一个对象。我想我理解:类和对象在python中是两个平行的东西:每个对象都有它的类类型,每个类都是一个对象