类型(元类)和对象(超类)之间的关系

时间:2013-07-19 05:39:15

标签: python oop python-2.7 python-3.x

我对python有基本的了解。任何人都可以告诉我'type'和'object'之间的关系是什么(我知道typeobject的子类)。 因为当我们在解释器中执行以下语句时,输出会混淆彼此之间的关系,即它们如何解决这种混淆。

1)

type(object)
<type 'type'>
>>> type(type)
<type 'type'>

通过查看上述结果,我们可以说'对象'的类型是'type','type'的类型也是'type'。

2)同样可以实现与上述相同的结果。

type.__class__
<type 'type'>
>>> object.__class__
<type 'type'>

通过观察这个我们可以说类对象是'type'类型而class'type'是它自己的类型。 3)

object.__bases__
()
>>> type.__bases__
(<type 'object'>,)

但是当我选择每个类的超类时,我发现该对象是New-style类系统中所有类的超类,而type是对象的子类。

我只想知道这两个类之间的关系。他们如何相互联系。任何人都可以建议我进入python内部的任何好的学习材料。

2 个答案:

答案 0 :(得分:2)

关系是typeobject的子类。此外,type(x)其中x 任何类型(包括type本身和object)都会返回type

>>> type(int)
<type 'type'>
>>> type(str)
<type 'type'>
>>> type(object)
<type 'type'>
>>> type(type)
<type 'type'>

然而:

>>> type(0)
<type 'int'>
>>> type('')
<type 'str'>

答案 1 :(得分:2)

objecttype都是type的实例。 typeobject的子类。

这有点奇怪,而不是你可以用你自己的用户定义的类复制的东西。但是,如果您考虑typeobject是什么,那就有意义了:

listtype,一切都是object。因此,typeobject是各种事物,即type的a.k.a.实例。

一切都是object。特别是,type s也是object。因此,type是对象的子类。