Python 是";“类型”;函数还是类?
我对Python 是";“类型”;函数还是类?,python,function,class,object,types,Python,Function,Class,Object,Types,我对类型有点困惑,因为它列在中的内置函数中 但是,当我运行type(type)和type.\uuu dict\uuu时,它看起来更像是一个可调用的类。除此之外,调用isinstance(type,type)返回True。发生了什么事?type是一个类,也称为类型-这些术语在Python3中基本上是等效的,尽管type模块引入了单独的、微妙不兼容的“type”一词用法 它被记录在“内置函数”下,因为当你像函数一样调用它时,这是记录它所做事情的最清晰的地方。这里记录了许多类型。如果你看这页的顶部,你
类型有点困惑,因为它列在中的内置函数中
但是,当我运行type(type)
和type.\uuu dict\uuu
时,它看起来更像是一个可调用的类。除此之外,调用isinstance(type,type)
返回True
。发生了什么事?type
是一个类,也称为类型-这些术语在Python3中基本上是等效的,尽管type
模块引入了单独的、微妙不兼容的“type”一词用法
它被记录在“内置函数”下,因为当你像函数一样调用它时,这是记录它所做事情的最清晰的地方。这里记录了许多类型。如果你看这页的顶部,你会看到
Python解释器内置了许多函数和类型,这些函数和类型总是可用的。它们按字母顺序列在这里
type
是一种类型。它是其他内置类型(包括自身)的元类
事实上,class
语句是调用type
的声明性语法。前面的内容相当于
class B(A):
x = 3
我没有名誉可以评论,
请参阅以下问题:
在CPython(从Python.org下载的Python的参考实现)中,type
只是PyType\u type
实例的对象,解释器会自动填充到内置名称空间中。你可以在CPython源代码中找到它的定义,例如。我不确定为什么这个问题被关闭。这是一个非常具体的问题,关于类型实际上是什么,因为它的行为类似于对象,但也类似于类对象,因为它本身就是一个实例。@Brian对初始标题的反应。。
>>> class A: pass
...
>>> type(A)
<class 'type'>
>>> B = type('B', (A,), {'x': 3})
>>> type(B)
<class 'type'>
>>> B.x
3
class B(A):
x = 3