什么是callable
可callable
的对象是指:可被调用执行的对象,并且可以传入参数。
换句话说:只要可以在一个对象的后面使用小括号来执行代码,那么这个对象就是callable
对象。
callable
的作用
callable(object)
- 如果参数
object
是不可调用的就返回False
,否则返回True
。 - 如果返回
False
,调用object
将肯定不会成功;但如果返回True
,调用object
却不一定成功。 - 可
callable
的对象(object
)种类包括:- 函数
- 类(注意:调用类本质上返回的是一个实例)
- 类内方法(即:类里面定义的函数)
- 实现了内置方法
__call__
的对象(即:该对象所属的类定义了__call__
方法)
可callable
的对象
- 函数
def test(): print('ok') print(callable(test)) # True test() # ok
- 类
class Stu(object): def __init__(self, name): self.name = name print(callable(Stu)) # True print(Stu('小明').name) # 小明 # 调用类 "Stu('小明')" 返回的是实例 stu = Stu('小明')
- 类内方法
class Stu(object): def __init__(self, name): self.name = name def run(self): print('{name} is running'.format(name=self.name)) print(callable(Stu.run)) # True Stu("小明").run() # 本质上是先实例化,后调用实例的方法
- 实现了内置方法__call__的对象
class Stu(object): def __init__(self, name): self.name = name def __call__(self, *args, **kwargs): self.run() def run(self): print('{name} is running'.format(name=self.name)) stu = Stu('小明') print(callable(stu)) # True stu() # 小明 is running # 区别与“类内方法”中是“实例.方法()”;这里用的是“实例()”