callable()関数は、Pythonオブジェクトが呼び出し可能かどうかを判定するための組み込み関数です。関数やメソッド、クラスなどの呼び出し可能なオブジェクトに対してTrueを返し、そうでないオブジェクトに対してはFalseを返します。

callable()関数の基本的な使い方

callable()関数の基本的な構文は以下の通りです:

callable(object)

使用例:

# 関数は呼び出し可能
def greet():
    print("Hello!")

print(callable(greet))  # True

# 通常の変数は呼び出し不可
x = 100
print(callable(x))  # False

# クラスは呼び出し可能
class MyClass:
    pass

print(callable(MyClass))  # True

# クラスのインスタンスは通常呼び出し不可
obj = MyClass()
print(callable(obj))  # False

クラスインスタンスを呼び出し可能にする

`__call__`メソッドを実装することで、クラスのインスタンスを呼び出し可能にできます:

class Counter:
    def __init__(self):
        self.count = 0
    
    def __call__(self):
        self.count += 1
        return self.count

counter = Counter()
print(callable(counter))  # True
print(counter())  # 1
print(counter())  # 2

callable()の一般的な使用例

1. 関数の型チェック:

def execute_if_callable(func):
    if callable(func):
        return func()
    return "Not a callable object"

2. コールバック関数の検証:

def register_callback(callback):
    if not callable(callback):
        raise TypeError("Callback must be callable")
    # コールバックの登録処理

注意点

  • callable()がTrueを返しても、実際の呼び出しが成功するとは限りません
  • Python 2では一時的にcallable()が削除されていましたが、Python 3で再び導入されました
  • ラムダ関数、メソッド、ビルトイン関数なども呼び出し可能なオブジェクトです

まとめ

callable()関数は、オブジェクトが呼び出し可能かどうかを簡単に判定できる便利な関数です。特に:

  • 関数やメソッドの型チェック
  • コールバック関数の検証
  • クラスインスタンスの呼び出し可能性の確認

などの用途で活用できます。プログラムの安全性を高めるためのバリデーションに有効です。