- چهارشنبه ۲۶ دی ۱۴۰۳
شی گرایی در پایتون چیست؟
شی گرایی در پایتون چیست؟
یکی از رویکردهای مهم در برنامه نویسی، شیگرایی در پایتون است. بسیاری از برنامه نویسان با استفاده از این رویکرد به توسعه پروژههای خود پرداخته و پیشرفت فوق العادهای را در این میان به دست آوردهاند. این شیوه شامل مفاهیم کلیدی و اصول خاصی میشود که باید از آنها در پیادهسازی برنامههای مبتنی بر این روش استفاده گردد. زبان برنامه نویسی پایتون از جمله محبوب و پرکاربردترین زبانهای برنامه نویسی به حساب آمده که شی گرا بوده و به خوبی میتوان اصول شی گرایی را در آن اجرا کرد. در این مقاله از مجتمع فنی تهران مبحث شی گرایی در پایتون را مورد بررسی قرار میدهیم.
آشنایی با شی گرایی در پایتون
رویکرد برنامه نویسی شی گرا بر پایه دو مفهوم اصلی شی و کلاس شکل میگیرد که با این دو مفهوم میتوان اطلاعات تمام ماهیتهای دنیای واقعی را در برنامه به راحتی ذخیره کرد. به بیان جزئیتر میتوان گفت هدف از شی گرایی در پایتون ساخت کلاسی است که در برگیرنده تمامی ویژگیها و رفتارهای مرتبط با یک ماهیت باشد و از طریق ایجاد شی از کلاس مربوطه بتوان به همه مشخصههای همان ویژگیها و متدها دسترسی پیدا کرد.
به عنوان نمونه میتوان ماهیت یک شخص را در دنیای واقعی در نظر گرفت که این ماهیت شامل مجموعهای از ویژگیها و رفتارهای مختلفی نظیر نام سن آدرس محل سکونت راه رفتن صحبت کردن و دویدن است در برنامه نویسی شی گرایی در پایتون با استفاده از ساخت کلاس میتوان این مشخصهها را تعریف کرده و قالبی به وجود آورده سپس برای تعریف افراد مختلف با اطلاعات متفاوت اشخاص مختلفی را از این کلاس به وجود آورد.
معرفی مفاهیم اصلی برنامه نویسی شی گرا در پایتون
در مبحث شی گرایی پایتون مفاهیم و اصطلاحات متعددی به کار برده میشود که در ادامه مطلب به صورت مختصر به آنها اشاره میکنیم.
کلاس در شی گرایی پایتون
یک کلاس در واقع نقشه ساخت برای یک شی است. میتوان به یک کلاس به عنوان پیش طرح از کلمه طوطی با برچسبهای آن نگاه کرد. کلاس همه جزئیات درباره نام، رنگها، اندازه و دیگر موارد را دارا است. بر اساس این توضیحات میتوان درباره طوطی یا پرندهای که آن را مدنظر گرفتهاید، مطالعاتی انجام داد؛ در اینجا طوطی یک شی است .
ویژگیهای کلاس در پایتون
شی گرایی در پایتون این امکان را برای برنامه نویسان فراهم میآورد تا ویژگیهای مختلفی را درون کلاس ایجاد نمایند. برای ساخت ویژگیها میتوان از تعریف متغیر استفاده کرد. دو نوع ویژگی در کلاس پایتون میتوان ساخت که در ادامه با آنها اشاره میکنیم.
متغیرهای کلاس: این متغیرها نوعی از ویژگیهای درون کلاس هستند که پس از اعلان کلاس تعریف میگردند. این متغیرها به وسیله شیءگرایی در پایتون خارج از توابع داخل کلاس قرار میگیرند. مقادیر این نوع متغیرها برای تمامی اشیای ساخته شده از کلاس به اشتراک گذاشته میشوند.
متغیرههای وهلهای شی گرایی در پایتون: متغیرهای نمونه متغیرهایی هستند که درون توابع و سازندهها تعریف خواهند شد و از یک کلاس مشابه متفاوت خواهد بود. به عبارتی، این نوع متغیرها مختص اشیاء هستند و مقادیرشان بین اشیاء مختلف کلاس به اشتراک گذاشته نمیشوند. به منظور مقداردهی اولیه متغیرهای نمونه، میتوان از متد__init__()درون کلاس استفاده کرد. زمانی که شی جدیدی را از یک کلاس ایجاد میکنید، بهطور خودکار، متد__init__()فراخوانی میشود. بدین ترتیب، میتوان از این متد برای مقداردهی اولیه مشخصههای اشیاء استفاده کرد.
شی
منظور از شی یک نمونه از یک کلاس است. هنگامی که کلاس تعریف میشود، تنها توصیف شی بیان میگردد. بنابراین هیچ حافظه یا فضای ذخیره سازی به آن تخصیص داده نخواهد شد.
متدها در رشتهگرایی در پایتون
متدها توابعی هستند که درون بدنه کلاس تعریف میشوند. از این متدها برای تعریف رفتار یک شی به خوبی استفاده میگردد. متد به فانکشنهایی گفته میشود که درون یک کلاس قرار دارند. هر متد وظیفه انجام کار مشخصی را به عهده دارد. متدها رفتار یک کلاس هستند که آبجکتها میتوانند از آنها برای کار روی دادههای خود استفاده کنند. برای فراخوانی متدها باید از آبجکتی که از کلاس ساختهاید، بهره ببرید.
ارث بری
ارثبری راهکاری عالی برای ساخت یک کلاس جدید با استفاده از جزئیات موجود در یک کلاس بدون ویرایش آن خواهد بود. کلاس جدیدی که شکل میگیرد، یک کلاس مشتق شده بوده که به طور مشابه کلاس موجود کلاس مبنا است.
انواع مختلف ارثبری در شی گرایی در پایتون کدامند
ارثبری در شی گرایی در پایتون دارای انواع مختلفی است که در ادامه مطلب به بررسی آنها میپردازیم.
وراثت منفرد شی گرایی در پایتون
یکی از انواع نحوه ارثبری در شی گرایی، نوع ارثبری منفرد است. در این نوع وراثت هر کلاس فرزند تنها دارای یک کلاس والد بوده و تمام ویژگیها و متد کلاس والد را به ارث خواهد برد. هنگامی که چندین کلاس وجود داشته باشد و بخواهیم کلاس جدیدی را به عنوان کلاس فرزند ایجاد نماییم که تمامی مشخصههای کلاسهای موجود را به ارث ببرد، از وراثت چندگانه استفاده میشود. به منظور ایجاد وراثت چندگانه در پایتون، کافیست در زمان اعلان کلاس فرزند، نام همه کلاسهای والد در داخل پرانتز نوشته شوند.
وراثت چند سطحی شیگرایی در پایتون
وراثت چندسطحی شی گرایی در پایتون این امکان را فراهم میآورد تا کلاس فرزند، از کلاسی ارثبری کند که آن کلاس، خودش به عنوان کلاس فرزند محسوب میشود. به عبارتی، کلاس فرزند، علاوه بر کلاس والد خود، از کلاس والدِ والد خود نیز ارثبری میکند.
وراثت چندگانه شی گرایی در پایتون
زمانی که چندین کلاس وجود داشته باشند و بخواهیم کلاس جدیدی را به عنوان کلاس فرزند ایجاد کنیم که تمامی مشخصههای کلاسهای موجود را به ارث ببرد، از وراثت چندگانه استفاده میکنیم. به منظور ایجاد وراثت چندگانه در پایتون، کافی است در زمان اعلان کلاس فرزند، نام تمامی کلاسهای والد در داخل پرانتز نوشته شوند.
وراثت سلسله مراتبی شی گرایی در پایتون
وراثت سلسله مراتبی این امکان را فراهم میآورد تا یک کلاس را والد تعریف کرده و کلاسهای فرزند مختلفی بسازیم که از آن کلاس والد ارثبری میکنند.
وراثت ترکیبی در پایتون
آخرین نوع وراثت در شی گرایی پایتون، وراثت ترکیبی است. این نوع وراثت ترکیبی از انواع روشهای قبلی ارث بری است که تا به الان توضیح داده شد. به عبارتی میتوان گفت در وراثت ترتیبی میتوان از ترکیب وراثت ساده، وراثت چند سطحی، وراثت چندگانه و وراثت سلسله مراتبی بهره برد.
کپسوله سازی
به وسیله P00 میتوان دسترسی به متدها و متغیرها را به خوبی محدود نمود. این کار از ویرایش مستقیم دادهها جلوگیری به عمل آورده و کپسول سازی نام میگیرد.
چند ریختی
منظور از چند ریختی در شی گرایی در پایتون، توانایی استفاده از رابط متداول به چندین شکل است. فرض میشود که کاربر نیاز به رنگ کردن یک شکل دارد. چندین گزینه برای شکل وجود دارد. میتوان از روش مشابه برای رنگ کردن هر شکل بهره برد.
نحوه ایجاد آبجکت از یک کلاس در شی گرایی پایتون
به وسیله آموزش پایتون نوجوان قطعاً این مورد آموزش داده شده است که چگونه یک آبجکت یا شی نمونه از یک کلاس ایجاد شود. شما میتوانید از کلاسی که در نظر گرفته شده، استفاده کرده و از آن برای ایجاد یک شی یا نمونه استفاده کنید. برای ساخت یک آبجکت از کلاس تنها کافیست کلاس مورد نظر را در یک متغیر ذخیره کنید. به ساخت آبجکت از یک کلاس instantiating گفته میشود. نام آبجکت هر چیزی میتواند باشد. اما سعی کنید نامی را انتخاب کنید که معنا داشته باشد. آبجکتها میتوانند به تمامی اطلاعاتی که در کلاس وجود دارند دسترسی داشته باشند.
مزایای به کارگیری شی گرایی در پایتون
مزایای به کارگیری شی گرایی در پایتون عبارتند از:
- سازماندهی و ساختاربندی کد برنامه نویسی شی گرا به شما کمک میکند کد را به صورت منظمتر و ساختارمندتر سازماندهی کنید. با استفاده از کلاسها و اشیاء، میتوانید کد را به بخشهای منطقی و قابل مدیریت تقسیم کنید که باعث افزایش خوانایی و نگهداری کد میشود.
- قابلیت بازاستفاده یکی از مهمترین مزایای شی گرایی، امکان باز استفاده از کد است. با تعریف کلاسها، میتوانید رفتارها و ویژگیهای مشترک را در یک جا تعریف کرده و آنها را در قسمتهای مختلف برنامه استفاده کنید.
- شی گرایی در پایتون از وراثت پشتیبانی میکند که به شما اجازه میدهد کلاسهای جدید را بر اساس کلاسهای موجود ایجاد کنید. این ویژگی باعث کاهش تکرار کد و ایجاد سلسله مراتب منطقی بین کلاسها میشود.
- چندریختی به شما اجازه میدهد متدهای مختلف با نام مشابه را در کلاسهای متفاوت تعریف کنید. این ویژگی انعطافپذیری و قدرت کد را افزایش میدهد.
- کپسولهسازی به شما کمک میکند دسترسی به دادهها و متدهای یک کلاس را محدود کنید. با استفاده از متغیرهای خصوصی private)) میتوانید از تغییرات ناخواسته جلوگیری کنید.
سوالات متداول در خصوص شی گرایی در پایتون
در این مطلب به بررسی شی گرایی در پایتون پرداختیم. حال قصد داریم به رایجترین سوالات مخاطبان عزیز پاسخ دهیم.
آیا پایتون کاملاً شیگرا است؟
پایتون یک زبان چندپارادایمی است که از شیگرایی پشتیبانی میکند، اما کاملاً شیگرا نیست. شما میتوانید از رویکردهای تابعی، شیگرا یا ترکیبی استفاده کنید. این انعطافپذیری یکی از نقاط قوت پایتون محسوب میشود.
تفاوت متد init با متد constructor چیست؟
در پایتون، __init__ همان متد سازنده (constructor) است. این متد هنگام ایجاد یک شیء جدید فراخوانی میشود و معمولاً برای مقداردهی اولیه ویژگیهای شیء استفاده میشود.
شیگرایی در پایتون چیست؟
شیگرایی (Object-Oriented Programming - OOP) یک پارادایم برنامه نویسی است که در آن برنامه بر اساس "اشیاء" سازماندهی میشود. در پایتون، این رویکرد شامل استفاده از کلاسها، اشیاء، وراثت و مفاهیم دیگر است که به سازماندهی و ساختاربندی کد کمک میکند.