“函数”和“模块”的类型是什么`

2024-06-25 05:44:48 发布

您现在位置:Python中文网/ 问答频道 /正文

>>> type(OptimizedRectangle) 
    <class 'type'>    
>>> type(OptimizedRectangle.get_area)
<class 'function'>

因此类的方法是类function的实例。你知道吗

>>> type(function)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined

既然function是一个类,而一个类是一个对象,那么function的类型是什么,即它是什么的实例?你知道吗

正如评论所建议的那样

>>> type(type(OptimizedRectangle.get_area))
<class 'type'>

那为什么type(function)不起作用呢?function是一个类,类的方法是它的一个实例吗?你知道吗


同样,为什么type(module)不起作用?你知道吗

>>> type(builtins)
<class 'module'>
>>> type(module)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'module' is not defined

Tags: 实例方法mostgettypefunctionareacall
2条回答

函数是Python中最简单的可调用对象。 read more here

内置模块^{}存储语言中使用的所有类型。它还包含对应于实例方法的^{}

>>> class Foo:
...     def bar(self):
...         pass
>>> type(Foo.bar) is types.FunctionType
True

在解释器中调用type(Foo.bar)时,输出是<class 'function'>,但是这并不一定意味着类的名称是'function',而是类的表示(__repr__):

>>> type(types.FunctionType).__repr__(type(Foo.bar))
"<class 'function'>"

正如在注释中指出的types.FunctionType也只包含对在实现级别定义的函数类型的引用。你知道吗

FunctionType的类型也是type,也就是说FunctionTypetype的实例(所有类都是这样)。你知道吗

还要注意它的特殊性

>>> type(type) is type
True

这意味着类型是它自己的类(即type.__class__指向它自己)。这是在执行层面实现的。你知道吗

相关问题 更多 >