مفهوم dataclass
در پایتون و نحوه استفاده
در پایتون، dataclass
یک دکوراتور (Decorator) است که از نسخه 3.7 معرفی شده و برای سادهسازی تعریف کلاسهایی که صرفاً برای نگهداری دادهها طراحی شدهاند، استفاده میشود. این دکوراتور به صورت خودکار متدهای معمول مانند __init__
، __repr__
، __eq__
و غیره را برای کلاس ایجاد میکند تا نیازی به نوشتن این متدها به صورت دستی نباشد.
مزایای استفاده از dataclass
- کاهش کدهای تکراری و افزایش خوانایی
- ایجاد خودکار سازنده (constructor) و متدهای مفید دیگر
- قابلیت تایپگذاری بهتر و استفاده از ویژگیهای تایپینگ
- مناسب برای کلاسهایی که صرفاً داده نگهداری میکنند (POJO یا DTO)
نحوه استفاده از dataclass
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
is_student: bool = False # مقدار پیشفرض
p1 = Person("Ali", 30)
p2 = Person(name="Sara", age=25, is_student=True)
print(p1) # خروجی: Person(name='Ali', age=30, is_student=False)
print(p2.age) # خروجی: 25
توضیح مثال
در این مثال، کلاس Person
با استفاده از @dataclass
تعریف شده است. نیازی نیست که متد __init__
را خودمان تعریف کنیم. پایتون به صورت خودکار این متد را بر اساس متغیرهای کلاس میسازد.
جایگاه dataclass
زمانی که بخواهید یک کلاس ساده برای ذخیره و انتقال داده تعریف کنید، بدون رفتار پیچیده، dataclass
بهترین انتخاب است. این ابزار در پروژههایی که به ساختارهای دادهای خوانا و سریع نیاز دارند بسیار کاربردی است.
برای مثال، مدلهای دادهای در برنامههای وب، ذخیره اطلاعات کاربر، یا پاسخ API میتوانند با dataclass
به صورت ساده و تمیز نوشته شوند.