typing در کلاس ها

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/05/12
  • تعداد بازدید: 18

مفاهیم پیشرفته‌تر تایپینگ در پایتون

پایتون از تایپینگ استاتیک پشتیبانی می‌کند که به برنامه‌نویسان کمک می‌کند کدهای خود را بهتر سازماندهی و از خطاهای تایپی جلوگیری کنند. در این بخش با چند مفهوم پیشرفته‌تر تایپینگ آشنا می‌شویم:

۱. 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

استفاده از این مفاهیم در تایپینگ، کدهای شما را دقیق‌تر، قابل فهم‌تر و کم‌خطاتر می‌کند و به بهبود کیفیت پروژه‌های بزرگ کمک می‌کند.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.