是的,在 Python 3 中,一切都是object
某个类的一个实例。我们可以用 明确地检查这一点isinstance
。
def f(x):
return x
print(isinstance(f, object)) # True
有趣的是,该名称function
没有在内置函数中定义,但我们可以很好地使用它,正如您已经确定的那样,通过说
function = type(f)
值得注意的是,内置函数和(绑定)方法的类型与常规函数不同。
class A:
def foo(self):
pass
print(type(f)) # <class 'function'>
print(type(abs)) # <class 'builtin_function_or_method'>
print(type(A.foo) # <class 'function'>
print(type(A().foo) # <class 'method'>
我们可以使用help(function)
(其中function
定义如上)来获取有关构造函数的更多信息。
class function(object)
| function(code, globals, name=None, argdefs=None, closure=None)
|
| Create a function object.
|
| code
| a code object
| globals
| the globals dictionary
| name
| a string that overrides the name from the code object
| argdefs
| a tuple that specifies the default argument values
| closure
| a tuple that supplies the bindings for free variables
|
| Methods defined here:
|
| __call__(self, /, *args, **kwargs)
| Call self as a function.
|
| __get__(self, instance, owner, /)
| Return an attribute of instance, which is of type owner.
|
| __repr__(self, /)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __annotations__
|
| __closure__
|
| __code__
|
| __defaults__
|
| __dict__
|
| __globals__
|
| __kwdefaults__
正如评论中已经指出的那样,实际上调用这个庞然大物是不平凡的,我无法立即在 Python 的网站上找到任何关于如何这样做的好的文档。