2013-07-19 70 views
1

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

1)

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

通过观察以上的结果,我们可以说该类型的“对象”是“类型”,和“类型”的类型也是“类型”。

2)通过这也可以实现与上述相同的结果。

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

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

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

但是,当我去为每个超,我发现,目标是在新式类系统中的所有类的父类,而类型为对象的子类。

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

+0

[This](http://stackoverflow.com/a/6581949/198633)是相关的和有趣的,但也许有点高级 – inspectorG4dget

回答

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

我知道该类型是对象的子类。但如果object是类型的超类,那么'object'的类型是'type','type'的类型是'type'。 –

+0

@tailor_raj:由于我(不成功)试图解释,*任何类*的type()都是'type'。 – NPE

2

objecttypetype两个实例。 typeobject的一个子类。

这有点奇怪,而不是你可以用自己的用户定义的类复制的东西。然而,这是有道理的,如果你认为什么typeobject是:

listtype,一切是object。因此,typeobject是各种各样的事物,又名为type的事例。

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

相关问题