Giới thiệu
Trong Python, callables là những object có thể được dùng với parenthesis operator, hay (). Những callables cơ bản mà ta thường xuyên bắt gặp là những functions và methods. Đặc điểm của callables là sẽ luôn trả về một giá trị nào đó. Ví dụ đối với functions, nếu ta không trả về giá trị một cách cụ thể, functions sẽ mặc định trả về giá trị None.
Các loại Callables
Để kiểm tra một object có phải callable hay không, ta có thể dùng hàm callable, ví dụ:
>>> callable(sorted)
True
>>> callable(9)
False
Không chỉ functions và methods, classes cũng là một dạng callable:
>>> class A:
... pass
...
>>> callable(A)
True
Ngoài ra, class instances cũng có thể là một callable, nếu class đó implement dunder method __call__. Sau khi trở thành callable, ta có thể gọi instances đó với () tương tự như một functions. Các loại callables khác nâng cao hơn có thể kể đến là: generators, coroutines,…
Dunder method __call__
Sau đây là một ví dụ về việc sử dụng class instances như một callable:
class Counter:
def __init__(self):
self.count = 0
def __call__(self):
self.count += 1
return self.count
c = Counter()
print(c()) # 1
print(c()) # 2
Bạn có thể đang tự hỏi trong các trường hợp nào thì nên sử dụng callable instances. Từ ví dụ trên, ta có có thể thấy, kỹ thuật này sẽ hữu ích khi ta muốn duy trì những internal states qua các lần gọi khác nhau.
Callable instances trong code thực tế
Trong code snippet dưới đây, nằm trong một module hiện thực một tool cho LLM agents để thực hiện thao tác trên file dễ dàng hơn (ví dụ như xem file, tạo file, chỉnh sửa file, tương tự như một text editor đơn giản) của Anthropic, yêu cầu đặt ra là tool này phải lưu trữ trạng thái bên trong (stateful) qua các lần sử dụng bởi agents. Nhóm tác giả đã sử dụng callable instances để implement tool này.
Cảm ơn mọi người đã đọc bài. Hẹn gặp bạn ở bài viết tiếp theo!

Bình luận về bài viết này