Nhảy đến nội dung chính

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 PositiveIntint kèm theo hàm kiểm tra. Bạn có thể tưởng tượng Annotated giống như int, nhưng có thêm "hướng dẫn sử dụng".