شیگرایی در پایتون
شیگرایی به برنامهنویسان اجازه میدهد که objectهای خودشان را بسازند. که متدها و ویژگیهای خودشان را دارند. در واقع برای برنامههای بزرگ (scriptهای بزرگ) توابع کافی نیست و نیاز به شیگرایی داریم. در object oriented programming کلاسهایی را تعریف میکنیم که دارای متدها، ویژگیها و صفات منحصربهفرد میباشد. به عنوان مثال میتوان به کلاس گربه اشاره کرد. که دارای صفاتی مانند رنگ بدن، رنگ چشم، اندازه و وزن و متدهایی مانند خوابیدن، راه رفتن، صدا کردن، دویدن و غذا خوردن میباشد.
ایجاد کلاس در شیگرایی
در شیگرایی (object oriented programming) برای ساختن یک کلاس در ابتدا کلمه class را مینویسیم، سپس اسم کلاس را نوشته و : را میگذاریم. در تعریف یک کلاس، نام کلاس را باید با حرف ابتدایی بزرگ نوشت و معمولا از _ بین کلمات نام کلاس استفاده نمیکنیم.
ساختار ایجاد کلاس به صورت زیر میباشد:
:()class Student
pass
ساخت نمونه یا object در شیگرایی
در شیگرایی از یک کلاس میشود به تعداد بینهایت نمونه یا object ساخت. برای ساخت object، باید از کلاس بیرون بیاییم و بنویسیم:
()std1 = Student
معنی این عبارت به این صورت میباشد که std1، یک نمونه از کلاس Student است.
صفت یا attributeهای یک کلاس در شیگرایی
در شیگرایی داخل کلاس که ایجاد میشود یک متد به نام ()__init__ وجود دارد که بعد از تعریف کلاس نوشته میشود. در داخل این متد میتوانیم صفات یا attributeها را تعریف کنیم. در این صورت کاربر در هنگام تعریف نمونه مورد نظر باید یک سری ورودی را برای همان attributeهای تعریف شده، به کلاس دهد. در داخل این متد از کلمه self استفاده میکنیم. در واقع در شیگرایی، self برای object مورد نظر و یا هر object که در آینده قرار است ساخته شود به عنوان یک نماینده میباشد.
در این کد ویژگی name را در متد init تعریف کردهایم. اگر بخواهیم به این attribute دست پیدا کنیم. باید اسم نمونهایی را که ایجاد کردهایم، بجای self نوشته و بعد از نقطه، attribute مورد نظر را مینویسیم.
همچنین در شیگرایی میتوان صفاتی را در کلاس تعریف کنیم که نیازی به ورودی در هنگام فراخوانی object نداشته باشد.
در شیگرایی میتوان attribute را در خارج از متد init نوشت در این صورت این ویژگی ثابت خواهد بود و قابلیت تغییر از بیرون از کلاس را ندارد.
متدهای یک کلاس در شیگرایی
در شیگرایی هنگامی که در داخل یک کلاس یک تابع تعریف میکنیم، نام آن تابع را متد در نظر میگیریم. در تعریف متدها در کلاس همیشه اولین ورودی کلمه self است. در این صورت این متد برای هر object که ساخته میشود، متفاوت عمل میکند. زیرا هر نمونه ورودی متفاوتی دریافت میکند. که میتواند در داخل متدهای کلاس نقش داشته باشند.
در کد فوق، متدی که ساختهایم اسم و فامیل را کنار هم قرار میدهد و در نهایت return میکند. نکته مهم این است که در هنگام فراخوانی متدها در شیگرایی باید حتما () را بگذاریم.
در شیگرایی برای متدهایی که در کلاس تعریف میکنیم میتوان ورودی در نظر گرفت.
در این صورت در کد فوق به دلیل اینکه برای متد داخل کلاس یک ورودی یا آرگومان در نظر گرفتهایم. در هنگام فراخوانی متد bark باید ورودی number را برای این متد در نظر بگیریم.
در شیگرایی در یک کلاس هنگام تعریف یک attribute و یا یک متد میتوان از attributeهای دیگری که در کلاس تعریف شده است، استفاده کرد.
در کد فوق اگر بخواهیم attribute که خارج از دو متد نوشته شده است را در یکی از متدها استفاده کنیم باید از کلمه self استفاده کنیم. به عنوان مثال ویژگی pi که خارج از متدها تعریف شده است. هنگامی که بخواهیم در متد circumfrence از آن استفاده کنیم از کلمه self استقاده میکنیم. اما در متد init به دلیل اینکه ویژگی r داخل همین متد تعریف شده است. هنگامی که بخواهیم از صفت r در ایجاد area استفاده کنیم دیگری نیازی به کلمه self نمیباشد.
برای آشنایی بیشتر با مباحث شیگرایی و نحوه کار با آنها میتوانید به دوره جامع آموزش زبان برنامهنویسی پایتون آکادمی رسا مراجعه کنید.