可调用对象
在python中, 如果可以像使用函数(使用调用符号()
)那样使用的对象, 都叫可调用对象.
python的7种可调用对象
1. 用户自定义的函数
使用def
语句或lambda
表达式创建
2. 内置函数
使用C(Cpyhon)语言实现的函数, 如len()
3. 内置方法
使用C语言实现的方法, 如dict.get()
.
4. 方法
在类的定义体中定义的函数
5. 类
调用类时, 会首先运行类的__new__()
方法创建一个实例, 然后运行__int__()
方法来初始化这个实例, 最后把实例返回给调用方.
因为python没有new
运算符, 所以调用类, 相当于调用函数.
6. 类的实例
在python中, 类的实例也可以调用, 这是python与其他语言的一个很大的区别.
如果类定义了__call__()
方法, 则它的实例可以作为函数一样调用, 其实就是调用的__call__()
方法.
7. 生成器函数
使用 yield
关键字的函数或方法。调用生成器函数返回的是生成器对象。
判断一个类型是否可调用
Python 中有各种各样可调用的类型,因此判断对象能否调用,最安全的方法是使用内 置的 callable()
函数:
class My1(object):
pass
class My2(object):
def __call__(self, *args, **kwargs):
print("实例也可以被调用了, 很神奇吧")
m1 = My1()
m2 = My2()
m2()
list1 = [My1, m1, My2, m2, abs, 4]
list2 = [callable(x) for x in list1]
print(list2)