مفاهیم پیشرفتهتر تایپینگ در پایتون
پایتون از تایپینگ استاتیک پشتیبانی میکند که به برنامهنویسان کمک میکند کدهای خود را بهتر سازماندهی و از خطاهای تایپی جلوگیری کنند. در این بخش با چند مفهوم پیشرفتهتر تایپینگ آشنا میشویم:
۱. Genericها
جنریکها اجازه میدهند کلاسها یا توابعی بسازیم که برای انواع مختلفی از دادهها قابل استفاده باشند بدون نیاز به تعریف جداگانه برای هر نوع. این باعث میشود کدها انعطافپذیر و قابلاستفاده مجدد باشند.
from typing import TypeVar, Generic, List
T = TypeVar('T')
class Stack(Generic[T]):
def __init__(self):
self.items: List[T] = []
def push(self, item: T) -> None:
self.items.append(item)
def pop(self) -> T:
return self.items.pop()
stack_int = Stack[int]()
stack_int.push(10)
stack_int.push(20)
print(stack_int.pop()) # خروجی: 20
۲. پروتکلها (Protocols)
پروتکلها نوعی رابط هستند که مشخص میکنند یک کلاس باید چه متدها یا ویژگیهایی را داشته باشد. اگر یک کلاس این ویژگیها را داشته باشد، میتوان آن را به عنوان پیادهسازی آن پروتکل پذیرفت، حتی بدون ارثبری رسمی.
from typing import Protocol
class Drawable(Protocol):
def draw(self) -> None:
...
class Circle:
def draw(self) -> None:
print("Drawing a circle")
def paint(obj: Drawable) -> None:
obj.draw()
c = Circle()
paint(c) # خروجی: Drawing a circle
۳. TypedDict
TypedDict برای تعریف دیکشنریهایی با کلیدها و نوعهای مشخص استفاده میشود. این کمک میکند هنگام کار با دیکشنریهای پیچیده، تایپها را بهتر کنترل کنیم.
from typing import TypedDict
class PersonDict(TypedDict):
name: str
age: int
person: PersonDict = {"name": "Ali", "age": 30}
print(person["name"]) # خروجی: Ali
استفاده از این مفاهیم در تایپینگ، کدهای شما را دقیقتر، قابل فهمتر و کمخطاتر میکند و به بهبود کیفیت پروژههای بزرگ کمک میکند.