Metaclass là class có instance là các class. Giống như class thông thường định nghĩa hành vi của instance, metaclass định nghĩa hành vi của class và instance của chúng.
Python hỗ trợ metaclass. Một số lập trình viên coi metaclass là "giải pháp đang chờ vấn đề".
Ứng dụng phổ biến
- Logging và profiling tự động
- Kiểm tra interface (interface checking)
- Đăng ký class khi tạo (registry pattern)
- Tự động thêm method mới
- Tự động tạo property
- Proxy, ORM, validation framework
Ví dụ đơn giản
class Meta(type):
def __new__(mcs, name, bases, namespace):
print(f"Creating class: {name}")
return super().__new__(mcs, name, bases, namespace)
class MyClass(metaclass=Meta):
pass
# Output: Creating class: MyClass
Lưu ý: Metaclass là chủ đề nâng cao. Hầu hết ứng dụng không cần. Ưu tiên composition, decorator, class decorator trước.