Python Classes and Objects
کلاس و اشیاء
پایتون یک زبان برنامهنویسی شیء گرا است (object oriented programming).
تقریباً میتوان گفت که هر چیزی در پایتون یک شیء با خصوصیات و توابع شیء مخصوص به خود است.
کلاس به مانند سازنده (constructor) شیء یا نقشه (blueprint) ساختن شیء است.
ساختن کلاس
برای ساختن کلاس از کلیدواژه class
استفاده میکنیم. در کد زیر یک کلاس که دارای خصوصیتی به اسم x
است ساخته شده است.
class MyClass:
x = 5
ساختن شیء
الان میتوانی از اسم کلاس ساخته شده (MyClass)جهت ساختن شیء استفاده کنیم.
در کد زیر یک شیء به اسم p1
ایجاد و سپس مقدار x
را پرینت کردهایم.
تابع ()__init__
مثالهای بالا کلاس و شیء در سادهترین حالت خود بودند و هیچ کاربرد واقعی ندارند.
جهت درک معنی کلاس باید تابع __init__()
را درک کنیم.
همه کلاسها دارای تابعی هستند که آن را __init__()
میگویند و همیشه در زمان فراخوانی کلاس اجرا میشود.
از تابع __init__()
جهت اختصاص دادن مقادیر به خصوصیات شیء و یا سایر عملیاتهای لازم در هنگام ساختن شیء استفاده میشود.
در کد زیر کلاس Person
را ساخته و با استفاده از تابع __init__()
مقادیری را به اسم و سن اختصاص دادهایم.
__init__()
هر بار که از کلاس جهت ساختن یک شیء استفاده کنیم، به صورت خودکار فراخوانده میشود.
تابع ()__str__
تابع __str__()
آنچه را که در زمان نمایش شیء کلاس به صورت رشته باید برگردانده شود کنترل میکند.
اگر تابع __str__()
را ننویسیم، خروجی نمایش شیء کلاس به صورت زیر خواهد بود.
اما با تعیین تابع __str__()
میتوانیم تعیین کنیم که شیء کلاس چگونه نمایش داده شود.
تابع شیء
تابع شیء (methods) به تابعی (function) گفته میشود که متعلق به شیء باشد.
برای درک بهتر آن در کد زیر یک تابع شیء را در کلاس Person ایجاد کردهایم. تابع ایجاد شده پیام سلام را پرینت میکند.
پارامتر self
پارامتر self
ارجاعی به شیء ایجاد شده جاری از کلاس (current instance of the class) است و جهت دسترسی به متغیرهای متعلق به کلاس استفاده میشود.
البته ضرورتی ندارد که حتماً آن را self
بنامیم. میتوانید آن را هر چه که دوست دارید بنامید ولی باید حتماً اولین پارامتر هر تابعی درون کلاس باشد.
در زیر از دو واژه mysillyobject و abc استفاده کردهایم. البته برنامهنویسان به صورت یک عرف اغلب از همان کلمه self
استفاده میکنند.
تغییر خصوصیات یک شیء
برای تغییر خصوصیات یک شیء میتوانید به صورت زیر عمل کنید.
حذف خصوصیات یک شیء
با استفاده از کلیدواژه del
میتوان خصوصیات یک شیء را حذف کرد.
حذف یک شیء
برای حذف یک شیء نیز میتوان از کلیدواژه del
استفاده کرد.
دستور pass
زمانی که یک کلاس را تعریف میکنیم، محتوای آن نمیتواند خالی باشد ولی اگر به هر دلیلی کلاس ما خالی بود برای جلوگیری از بروز خطا عبارت pass
را داخل آن قرار دهید.
class Person:
pass