شی گرایی با پایتون - OOP in Python

شی گرایی با پایتونشئ گرایی چیست؟یک شیوه برنامه نویسی است. در این شیوه برنامه نویسی ساختار اصلی روی شئ (object) متمرکز شده به این معنا که سعی شده تمامی توابع و داده های که نیاز است در کنار هم در قالب یک شی آماده باشند. برای اطلاعات بیشتر به این لینک مراجعه کنید.کلاس چیست؟کلاس ها پایه اصلی برنامه نویسی شی گرا است، کلاس ها الگو و نقشه اولیه هستند. ما در کلاس ها ویژگی های یک شی را تعریف میکنیم. مثال بارزی که میتوان زد یک ماشین است که حتما دارای چرخ ، موتور است.برای تعریف کلاس از کلمه کلیدی کلاس استفاده میکنیم.class Car: pass نکته: در نام گذاری کلاس ها از روش Pascal Case استفاده میشود به این معنا که حروف اول کلمات بزرگ نوشته میشوند و کلمات به هم چسیبده است مانند: FirstName - FatherName - UserPicهمانطور که میدانید کلمه کلیدی pass در پایتون به این معناست که پایتون کاری انجام ندهد یعنی کد اجرا میشود ولی هیچ کاری انجام نمیشود. (معمولا زمانی از این دستور استفاده میکنیم که داخل یک تو رفتگی هستیم و میخواهیم بعدا تکمیلش کنیم در حالت عادی با ارور رو به رو میشویم.)در حال حاضر ما کلاس Car را تعریف کردیم اما هیچ آبجکت یا نمونه ای از آن ساخته نشده برای ساختن آبجکت باید همانند کد زیر عمل کنیم.car1 = Car() #object or instanceدر حال حاضر ما یک شئ از کلاس Car ساخته ایم اما عملا این کلاس هیچ کاری نمیکند چون چیزی برایش تعریف نکردیم.متد سازنده یا Constructor Method:تمامی کلاس ها یک متد سازنده دارند. اگر ما این متد را ننویسیم پایتون این متد را به صورت پیشفرض برایمان خواهد ساخت.اما وظیفه متد سازنده چیست؟؟؟وظیفه متد Constructor این است که هنگام ساخته شدن یک object اونو مقدار دهی اولیه (Initialize) کنه.ما تمام مقدایر اولیه رو که نیاز داریم یا اعمال اولیه که میخواهیم روی آن شی پیاده کنیم را با استفاده از این متد پیاده سازی میکنیم.نکته: اگر پارامتر های ورودی متد سازنده را هنگام تعریف کلاس به آن ندهیم با ارور مواجه خواهیم شد.برای تعریف متد سازنده در پایتون باید مانند کد زیر عمل کنیم.class Car: def __init__(self,name): # Constructor Method self.name = name # attribute در کد بالا ما متد سازنده کلاس Car را پیاده سازی کردیم و ورودی name را گرفتیم و در نمونه ای ساخته شده ذخیره کردیم.self نیز به عنوان یک ورودی گرفته شده نشان دهنده همان object است که ساخته شده یا عملی قرار است رویش انجام بشود.برای ساخت یک نمونه از این کلاس حال باید مانند کد زیر عمل کنید.car1 = Car('bmw')توجه داشته باشید به جای self خود car1 یا ابجکت ساخته شده ارسال میشود و به جای name مقداری که ما به کلاس دادیم یعنی bmw.حال اگر ما بخواهیم به attribute ساخته شده یا همان name برسیم باید با استفاده از یک نقطه "." این کار را کنیم مثل کد زیر:print(car1.name)خروجی کد زیر bmw خواهد بود.متد ها - Methods:تعریف متد ها دقیقا مانند توابع است اما متد ها داخل یک کلاس هستند.تعریف یک متد در پایتون class Car: def __init__(self,name): self.name = name def start(self): print(self.name, 'started')توجه کنید به جز موارد خاص در تمامی متد ها ما پارامتر self را باید دریافت کنیم در غیر اینصورت با ارور مواجه خواهیم شد. در متد استارت که تعریف کردیم پیامی حاوی نام ماشین و عبارت started نمایش داده خواهد شد.برای دسترسی به این متد نیز مانند attribute ای که در بالا تعریف کرده بودیم عمل خواهیم کرد...car1 = Car('bmw') car1.start()چند تعریف که بهتر است بدانید:تعریف attribute: خصوصیت های مربوط به یک کلاس همانند name در مثال بالاobject - instance: به شئ های ساخته شده از یک کلاس گفته میشود.و در آخر لازم به ذکر است که ما میتوانیم بیشتر از یک نمونه از یک کلاس بسازیم برای مثال:car1 = Car('bmw') # object or instance car2 = Car('benz') car3 = Car('Audi') car1.start() car2.start() car3.start()