首先,如果我问了一些愚蠢的问题,我很抱歉,因为我是Python新手…
我在读http://docs.python.org/3.1/reference/datamodel.html#objects-values-and-types时看到了这样一句话:
The type() function returns an object’s type (which is an object itself)
当然,我决定检查一下:
>>> def someFunction(x):
... return x * x
...
>>> type(someFunction)
<class 'function'>
>>> type(type)
<class 'type'>
所以,看起来函数有function
类型,但是如果type
函数是函数,为什么它有不同的类型呢?或者医生在撒谎,这不是一个真正的功能?你知道吗
是的,
type
是一个函数,但它是用C实现的它也有自己的类型,否则你不能:
例如,如果
type
的类型不是type
而是function
,则无法测试类型是否为类型。还有我吗?你知道吗从技术上讲,
type
是一个可调用函数,有两个相关的角色要扮演。它是一个元类(类工厂),是Python中所有类型的基,和当调用它时,它产生一个type
实例(<type 'function'>
是type
类型的实例)。你知道吗这同样适用于所有类型(包括类);调用它们并生成给定类型的新实例。你知道吗
type
是一个类,处理类对象。用对象调用它只是使用它的一种方法。您还可以使用它来创建元类。你知道吗例如
type
是built-in function,即可以作为函数调用的类型的对象。您可以使用一个参数调用它来获取对象的类型。但是还有另一个用例。你知道吗type
是一个metaclass,这意味着它本身就是一个类型,可以创建类(也可以是对象)。你知道吗type
是函数的另一个原因。可以用三个参数调用它来创建一个类。你知道吗type
是基本的内置元类。所以它是Python中任何东西的基础。因为type
位于类型的层次结构之上,type(type)
返回type
,即type
是类型本身。你知道吗你也可能会想:
相关问题 更多 >
编程相关推荐