首先,如果我问了一些愚蠢的问题,我很抱歉,因为我是Python的新手。
我在阅读http://docs.python.org/3.1/reference/datamodel.html#objects-values-and-types时看到了这句话:
函数的作用是:返回一个对象的类型(即对象本身)
当然,我决定检查一下:
>>> def someFunction(x):
... return x * x
...
>>> type(someFunction)
<class 'function'>
>>> type(type)
<class 'type'>
所以,看起来函数的类型是function
,但是为什么type
函数如果是一个函数,它的类型就不同了呢?或者医生们在撒谎,这不是一个真正的功能?
4条答案
按热度按时间3zwtqj6y1#
是的,
type
是一个函数,但它是用C实现的。它也必须**是它自己的类型,否则你不能做:
例如,如果
type
的类型不是type
而是function
,则无法测试类型是否为类型。还和我在一起吗从技术上讲,
type
是一个可调用对象,它有两个相关的角色。它是一个元类(一个类工厂),也是Python中所有类型的基础,和当被调用时,它会产生一个type
示例(<type 'function'>
是type
类型的示例)。这同样适用于所有类型(包括类);调用它们,它们会生成给定类型的新示例。
w1jd8yoj2#
1.注意,在Python中任何东西都是对象。对象可以是可调用的,即作为功能工作。
type
是内置的函数,即可以作为函数调用的类型的对象。您可以使用一个参数调用它来获取对象的类型。但还有另一个用例。type
是一个元类,这意味着它本身是一个类型,可以创建类(也是对象)。1.所有类(以及元类)都是可调用的,这也是为什么
type
是函数的另一个原因。你可以用三个参数调用它来创建一个类。type
是基本的内置元类。所以它是Python中任何东西的**基础。因为type
位于类型层次结构的顶部,所以type(type)
返回type
,即type
是自己的类型。你可能也想知道:
o0lyfsai3#
type
是一个处理类对象的类。使用对象调用它只是使用它的一种方式。您也可以使用它来创建 meta类。比如说,
83qze16e4#
你应该先了解一些概念:
1.现在'type()'是一个函数,'type'是一个对象。
类XYZ:传递打印(类型(XYZ))
输出:<class 'type'>