Generic
Generics cho phép bạn xác định kiểu dữ liệu một cách tổng quát, giúp viết code linh hoạt và an toàn hơn về mặt kiểu dữ liệu – đặc biệt hữu ích khi viết class, hàm làm việc với nhiều kiểu dữ liệu khác nhau.
Python hỗ trợ Generics, đặc biệt từ phiên bản Python 3.5 trở đi, nhờ vào typing module.
Cú pháp cơ bản với Generic
trong Python
from typing import TypeVar, Generic, List
T = TypeVar("T") # T là một kiểu bất kỳ
class Box(Generic[T]):
def __init__(self, content: T):
self.content = content
def get_content(self) -> T:
return self.content
# Dùng cụ thể
box_int = Box
box_str = Box[str]("hello")
print(box_int.get_content()) # 👉 123
print(box_str.get_content()) # 👉 "hello"
T
ở đây có thể là int
, str
, List[str]
, hay bất cứ kiểu nào bạn muốn
Ứng dụng thực tế
1. Với hàm:
from typing import TypeVar
T = TypeVar("T")
def identity(x: T) -> T:
return x
print(identity(5)) # int
print(identity("test")) # str
2. Với container:
from typing import List
def first_item(items: List[T]) -> T:
return items[0]
Một số generic types hay dùng trong typing
Type | Ý nghĩa |
---|---|
List[T] |
Danh sách chứa các phần tử kiểu T |
Dict[K, V] |
Dictionary với key là K , value là V |
Optional[T] |
Có thể là T hoặc None |
Union[T1, T2, ...] |
Có thể là một trong các kiểu liệt kê |
Tuple[T1, T2] |
Tuple với các phần tử theo thứ tự kiểu |
Callable[[T1, T2], R] |
Hàm nhận T1 , T2 trả về R |
Generic[T] |
Dùng để tạo class generic |
Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft
Không có bình luận