可callable的对象是指:可被调用执行的对象,并且可以传入参数。
换句话说:只要可以在一个对象的后面使用小括号来执行代码,那么这个对象就是callable对象。
callable的作用callable(object)
- 如果参数object是不可调用的就返回False,否则返回True。
- 如果返回 False,调用object将肯定不会成功;但如果返回True,调用object却不一定成功。
- 可callable的对象(object)种类包括:
- 函数
- 类(注意:调用类本质上返回的是一个实例)
- 类内方法(即:类里面定义的函数)
- 实现了内置方法__call__的对象(即:该对象所属的类定义了__call__方法)
- 函数
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 # 区别与“类内方法”中是“实例.方法()”;这里用的是“实例()”



