کلاس های داده در پایتون
کلاسهای داده (Data Classes) چیا هستن
کلاسهای داده (Data Classes) توی پایتون ۳.۷ معرفی شدن و کار رو برای تعریف کلاسهایی که فقط برای نگهداری دادهها هستن، خیلی راحت کردن. قبل از اومدن Data Classها، وقتی میخواستیم یه کلاس ساده برای ذخیره اطلاعات بسازیم، مجبور بودیم کلی کد بنویسیم؛ مثل تعریف متد __init__، __repr__ و غیره. اما با Data Classها، این کارا خودکار انجام میشه و کد تمیزتر و کوتاهتری داریم.
کلاس ها در پایتون
اگه یادتون رفته که کلاس ها چیا هستن یا شایدم دوس دارین بدونین که استاد ماش همدانی اون ها رو چطوری توضیح میده تو دوره جامع پایتون میتونین به این ویدئو مراجعه کنین.
استاد ماش از اساتید بنام سطح جهان در آموزش برنامه نویسه و اگه دوس دارین بیشتر در موردش اطلاعات کسب کنین، میتونین روی لینک زیر کلیک کنین.
چطوری از Data Class استفاده کنیم؟
برای استفاده از Data Class، اول باید ماژول dataclasses رو ایمپورت کنیم و بعد با دکوریتور dataclass@کلاسمون رو تعریف کنیم. اینجوری:
from dataclasses import dataclass
@dataclass
class Product:
name: str
price: float
in_stock: bool = True
توی این مثال، یه کلاس Product داریم با سه تا فیلد: name، price و in_stock. با استفاده از dataclass@، پایتون خودش متدهای __init__، __repr__ و بقیه رو برامون میسازه.
مزایای استفاده از Data Class ها:
استفاده از Data Classها در پایتون مزایای زیادی به همراه داره که میتونه برنامهنویسی رو سادهتر و کد رو بهینهتر کنه. این مزایا به شرح زیر هستند:
کاهش کدنویسی: یکی از بزرگترین مزایای Data Classها اینه که نیازی به نوشتن متدهای تکراری مثل
__init__،__repr__، و__eq__نداریم. وقتی که شما ازdataclass@استفاده میکنید، پایتون بهطور خودکار این متدها رو برای شما میسازه. این کار باعث میشه که حجم کد کاهش پیدا کنه و وقت کمتری برای نوشتن کدهای تکراری صرف بشه.خوانایی بیشتر: Data Classها به طرز چشمگیری خوانایی کد رو افزایش میدن. به جای اینکه یک کلاس بزرگ و پیچیده بنویسید که در اون باید همه ویژگیها و متدها رو دستی تعریف کنید، با استفاده از Data Class فقط ویژگیهای اصلی کلاس رو مشخص میکنید و بقیه بهصورت خودکار مدیریت میشه. این باعث میشه که کد تمیزتر و واضحتر باشه و راحتتر بشه آن را درک کرد.
مقایسه راحتتر: یکی از قابلیتهای جالب Data Classها اینه که بهطور پیشفرض متد
__eq__رو میسازن. این یعنی شما میتونید به راحتی دو شیء از یک Data Class رو با هم مقایسه کنید. بهطور معمول، برای مقایسه اشیاء باید خودتون متد__eq__رو پیادهسازی کنید، اما با استفاده از Data Class این کار بهطور خودکار انجام میشه. به این ترتیب، میتونید به راحتی بررسی کنید که دو شیء از یک Data Class برابر هستند یا نه.
در نهایت، استفاده از Data Classها به شما کمک میکنه که کدهای تمیزتر، کوتاهتر و قابل فهمتری بنویسید، که به مراتب کار با آنها راحتتر میشه.
چن تا نکته واسه استفاده کردن ازین کلاس های داده
تغییرناپذیری (Immutability): اگه میخوایم اشیاءمون بعد از ساخته شدن تغییر نکنن، میتونیم از پارامتر frozen=True توی دکوریتور استفاده کنیم:
from dataclasses import dataclass
@dataclass(frozen=True)
class Product:
name: str
price: float
in_stock: bool = True
اینجوری دیگه اگه بخوایم مقدار یکی از فیلدها رو عوض کنیم، پایتون ارور میده و اجازه این کار رو بهمون نمیده. عالیه. اما این نکته رو هم بد نیست بدونین که استفاده از frozen=True باعث میشه که کلاس داده مون غیرقابل تغییر باشه، اما این تغییرناپذیری به صورت سطحیه. به این معنی که اگه ویژگیها شامل اشیاء تغییرپذیر مانند لیستها یا دیکشنریها باشن، تغییرات درون آنها ممکنه رخ بده و هیچ خطایی هم رخ نمیده.
مرتبسازی فیلدها: تو پایتون، واسه مدیریت و سفارشیسازی فیلدهای توی کلاسهای داده (Data Classes)، میتونیم از تابع ()field استفاده کنیم. این تابع به شما امکان رو میده که ویژگیهای فیلدها رو تنظیم کنین، مث ترتیب نمایش، مقدار پیشفرض، و رفتارهای خاص دیگه. مثلا اگه بخوایم ترتیب فیلدها رو مشخص کنیم، یا فیلدی رو از بعضی قابلیتها مستثنی کنیم، میتونیم اینجوری از ()field استفاده کنیم.
from dataclasses import dataclass, field
@dataclass
class Product:
name: str
price: float
in_stock: bool = True
id: int = field(repr=False)
توی این مثال، فیلد id دیگه توی خروجی __repr__ نمایش داده نمیشه و این عالیه.
جمع بندی
توی این مقاله سعی کردیم در مورد یکی از مهمترین تغییراتی که تو پایتون 3.7 ایجاد شده بود توضیحات کوتاهی بدیم. کلاس های داده یا همون Data Classها ابزار خیلی مفیدی هستن که کدنویسی رو آسونتر و کدامون رو خواناتر میکنن. اگه توی پروژههاتون نیاز به تعریف کلاسهایی دارین که فقط برای نگهداری دادهها هستن، حتماً از Data Classها استفاده کنین.
ضمن این که ما دوره جامع پایتون رو با تدریس استاد ماش همدانی ترجمه و دوبله فارسی کردیم. میتونین این محصولات رو اینجا مشاهده و تهیه کنین. این دوبله ها با بهترین کیفیت ممکن دوبله شدن و میتونین با پرداخت ریالی، به بهترین دوره های بین المللی آموزش برنامه نویسی دسترسی داشته باشین.
درباره مرتضي بُنجَخي
یه دانش جوی خودآموز که هر روز دوس داره به آموزخته هاش اضافه کنه. از 13 سالگیش، یعنی از سال 82، داره زبان انگلیسی میخونه و الان دکترای آموزش زبان انگلیسی داره. 10 ساله که سوپروایزر یه آموزشگاه زبان انگلیسیه و 11 ساله که داره زبان انگلیسی تدریس میکنه. علاوه بر زبان انگلیسی تو مهارتهای کامپیوتری ماهره و با HTML، CSS و JS آشنایی داره و در حال حاضر داره پایتون یاد میگیره. در حال حاضر تو مجموعه اصل آموز داره مدیریت پروژه های دوبله رو انجام میده و یکی از دو مدیر اصلی این مجموعس. با امید زیادی به آینده قراره خبرای خوبی براتون داشته باشیم و کار شما رو واسه یادگیری برنامه نویسی راحت تر از قبل کنیم. اینجا اطلاعات بیشتری درمورد ایشون وجود داره.
نوشتههای بیشتر از مرتضي بُنجَخي
محصولات دوبله شده
- 6 دوره
محصولات زبان اصلی
- 4 دوره
دیدگاهتان را بنویسید