Annotated
Annotated
trong Python là cách để gắn thêm thông tin (metadata) vào một kiểu dữ liệu.
Cú pháp:
from typing import Annotated
x: Annotated[int, "This is some metadata"]
-
x
vẫn làint
-
"This is some metadata"
không ảnh hưởng đến việc chạy chương trình -
Nhưng các framework hoặc decorator có thể đọc và xử lý metadata đó để làm điều gì đó đặc biệt
Ví dụ đơn giản: kiểm tra quyền truy cập
from typing import Annotated
def view_dashboard(user: Annotated[str, "admin_only"]):
print(f"Welcome, {user}!")
-
user
là một chuỗi (str) -
Nhưng có thêm annotation
"admin_only"
— giả sử bạn dùng một framework kiểm tra quyền hạn, nó có thể dùng annotation đó để từ chối người không phải admin
Ví dụ với custom validator
from typing import Annotated
def validate_positive(x: int) -> int:
if x <= 0:
raise ValueError("Value must be positive")
return x
PositiveInt = Annotated[int, validate_positive]
def set_age(age: PositiveInt):
print(f"Age set to: {age}")
set_age(25) # OK
set_age(-1) # Sẽ báo lỗi vì validator check
Ở đây
PositiveInt
làint
kèm theo hàm kiểm tra. Bạn có thể tưởng tượngAnnotated
giống nhưint
, nhưng có thêm "hướng dẫn sử dụng".
Không có bình luận