说明:判断对象是否可调用。
def callable(obj):
'''
判断对象是否可调用
:param obj: 一个对象
:return: 如果 obj 可以调用则返回 True,否则返回 False
'''
!subtitle:说明
判断对象是否可以被调用,自定义类通过实现 __call__ 方法实现调用过程。
请注意,即使 callable 判断对象可以被调用,在实际调用对象时仍然可能会失败;但如果 callable 判断对象不可被调用,那么调用对象必定失败。
类是可调用的,调用类将返回一个新的实例,也即构造函数。
!subtitle:参数
obj - 要判断的变量
!subtitle:返回值
如果对象可以被调用,则返回 True
如果对象不可被调用,则返回 False
class Foo:
pass
class Bar:
def __call__(self):
pass
def func():
pass
print('数值', callable(10))
print('lambda', callable(lambda x:x))
print('函数', callable(func))
print('Foo 对象', callable(Foo()))
print('Bar 对象', callable(Bar()))
函数:包括内置函数、自定义函数和 lambda 表达式。
def greet():
print("Hello!")
print(callable(greet)) # 输出: True
方法:类中定义的方法。
class MyClass:
def method(self):
pass
obj = MyClass()
print(callable(obj.method)) # 输出: True
类:类本身是可调用的,因为调用类会创建一个实例。
class MyClass:
pass
print(callable(MyClass)) # 输出: True
实现了 __call__ 方法的对象:如果一个类实现了 __call__ 方法,其实例也可以被调用。
class CallableClass:
def __call__(self):
print("Called!")
obj = CallableClass()
print(callable(obj)) # 输出: True