Trong Python, callable (có thể gọi) đề cập đến bất kỳ đối tượng nào có thể được gọi như một hàm. Nói cách khác, một đối tượng được xem là callable nếu bạn có thể sử dụng dấu ngoặc đơn ()
sau tên của nó mà không gặp lỗi. Các đối tượng callable trong Python bao gồm:
- Hàm: Tất cả các hàm được định nghĩa bằng từ khóa
def
hoặc lambda
đều là callable.
- Phương thức: Các phương thức trong lớp cũng được xem là callable.
- Lớp: Khi bạn gọi một lớp (sử dụng dấu ngoặc đơn), nó sẽ tạo một thể hiện của lớp đó, do đó lớp cũng được xem là callable.
- Các đối tượng với phương thức
__call__
: Bất kỳ đối tượng nào định nghĩa phương thức __call__()
cũng có thể được gọi và do đó là callable.
Kiểm Tra Một Đối Tượng Có Callable Hay Không
Bạn có thể sử dụng hàm callable()
để kiểm tra xem một đối tượng có thể gọi được hay không. Hàm này trả về giá trị True
nếu đối tượng là callable và False
nếu không.
Ví Dụ Kiểm Tra Callable
def my_function():
return "Hello, World!"
class MyClass:
def __call__(self):
return "Instance called!"
# Kiểm tra các đối tượng
print(callable(my_function)) # Kết quả: True
print(callable(MyClass)) # Kết quả: True
print(callable(MyClass())) # Kết quả: True
print(callable(123)) # Kết quả: False
Ví Dụ Về Callable Trong Python
1. Hàm
def greet(name):
return f"Hello, {name}!"
print(greet("Alice")) # Gọi hàm
2. Phương Thức Trong Lớp
class Greeter:
def greet(self, name):
return f"Hello, {name}!"
greeter = Greeter()
print(greeter.greet("Bob")) # Gọi phương thức
3. Lớp
class Person:
def __init__(self, name):
self.name = name
# Gọi lớp để tạo một thể hiện
person = Person("Charlie")
print(person.name) # Kết quả: Charlie
4. Đối Tượng Với Phương Thức __call__
class Adder:
def __call__(self, a, b):
return a + b
adder = Adder()
print(adder(3, 5)) # Kết quả: 8
Kết Luận
Callable là một khái niệm quan trọng trong Python, giúp bạn hiểu cách các đối tượng tương tác với nhau trong mã của bạn. Bằng cách sử dụng callable, bạn có thể tạo ra các hàm, phương thức và lớp linh hoạt, cho phép bạn viết mã hiệu quả và dễ hiểu. Khả năng kiểm tra xem một đối tượng có thể gọi được hay không giúp bạn xử lý các tình huống khác nhau trong lập trình Python một cách linh hoạt.