Pythonの`callable()`関数は、オブジェクトが関数やメソッドのように呼び出し可能かどうかを判定する組み込み関数です。この記事では、`callable()`の使い方と具体的な例を解説します。
callable()の基本的な使い方
`callable()`は引数に指定したオブジェクトが呼び出し可能な場合は`True`を、そうでない場合は`False`を返します。
def sample_function():
return "Hello"
# 関数は呼び出し可能
print(callable(sample_function)) # True
# 文字列は呼び出し不可
print(callable("Hello")) # False呼び出し可能なオブジェクトの例
以下のようなオブジェクトは呼び出し可能です:
1. 関数
2. クラスメソッド
3. クラス(インスタンス化時に呼び出される)
4. `__call__`メソッドを実装したクラスのインスタンス
# クラスの例
class TestClass:
def __init__(self):
pass
def method(self):
return "Method called"
# クラスとそのメソッドのチェック
print(callable(TestClass)) # True
obj = TestClass()
print(callable(obj.method)) # True__call__メソッドを使用した例
クラスのインスタンスを呼び出し可能にするには、`__call__`メソッドを実装します:
class Calculator:
def __call__(self, x, y):
return x + y
calc = Calculator()
print(callable(calc)) # True
print(calc(5, 3)) # 8呼び出し不可能なオブジェクトの例
以下のようなオブジェクトは通常呼び出し不可能です:
# 数値
print(callable(42)) # False
# 文字列
print(callable("string")) # False
# リスト
print(callable([1, 2, 3])) # False
# 辞書
print(callable({"key": "value"})) # Falsecallable()の実践的な使用例
エラーハンドリングやタイプチェックで活用できます:
def execute_if_callable(obj, *args):
if callable(obj):
return obj(*args)
else:
raise TypeError("Object is not callable")
# 使用例
def add(a, b):
return a + b
try:
result = execute_if_callable(add, 5, 3)
print(result) # 8
# エラーケース
execute_if_callable("not_callable")
except TypeError as e:
print(e) # "Object is not callable"まとめ
`callable()`関数は、オブジェクトが呼び出し可能かどうかを簡単に判定できる便利な関数です。特に:
- 関数やメソッドの存在確認
- 動的な関数呼び出しの前のチェック
- カスタムクラスでの呼び出し可能性の実装
などで活用できます。適切なエラーハンドリングと組み合わせることで、より堅牢なコードを書くことができます。