آموزش کلاس و Object در پایتون
منبع: https://rasanika.com
پایتون یک زبان برنامه نویسی شی گرا است.
تقریباً همه چیز در پایتون یک شی (یا آبجکت)، با خواص و متدهای خودش است.
یک کلاس در واقع یک سازنده شی و یک "طرح" برای ایجاد آن است.
ایجاد یک کلاس
برای ایجاد کلاس از کلیدواژه class
استفاده کنید:
مثال
یک کلاس به نام MyClass با خصوصیتی به نام x ایجاد کنید:
class MyClass:
x = 5
ایجاد شی یا Object
اکنون می توانیم از کلاس MyClass برای ایجاد اشیاء استفاده کنیم:
مثال
یک شی به نام p1 ایجاد کنید و مقدار x را چاپ کنید:
p1 = MyClass()
print(p1.x)
تابع __init__()
در مثالهای بالا کلاسها و اشیاء در سادهترین شکل خود هستند و در برنامههای واقعی چندان کاربردی ندارند.
برای درک بهتر معنای کلاس ها باید تابع __init__()
را درک کنیم.
همه کلاس ها دارای یک تابع داخلی به نام __init__()
هستند که هنگام ایجاد یک شی، اجرا میشود.
از تابع __init__()
برای تخصیص مقدار به خصوصیات شی و یا سایر عملیاتی که هنگام ایجاد شیء لازم است، استفاده میکنند:
مثال
یک کلاس به نام Person ایجاد کنید، از تابع __init__()
برای تخصیص نام و سن استفاده کنید:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name)
print(p1.age)
توجه: هر بار که از کلاس برای ایجاد یک شی جدید استفاده می شود، تابع __init__()
به طور خودکار فراخوانی می شود.
تابع __str__()
تابع __str__()
تعیین میکند وقتی شی به عنوان یک رشته قرار است نمایش داده شود، چه مقداری برگردانده شود.
اگر تابع __str__()
تعریف نشده باشد، یک نمایش رشته ای از شی موردنظر توسط خود پایتون تولید می شود:
مثال (بدون تابع __str__()
)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1)
مثال (با تابع __str__()
)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}({self.age})"
p1 = Person("John", 36)
print(p1)
متد های آبجکت
اشیاء همچنین می توانند حاوی یک یا چند متد باشند. متد یک شی یعنی تابعی که به آن شی تعلق دارد.
مثال
تابعی تعریف کنید که یک تبریک چاپ می کند:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("John", 36)
p1.myfunc()
نکته: پارامتر self
یک مرجع و رفرنس به آبجکت فعلی از کلاس است و برای دسترسی به متغیرهایی که متعلق به آن هستند استفاده می شود.
پارامتر self
پارامتر self
یک مرجع به نمونه فعلی کلاس است. نیازی نیست که حتما self نامگذاری شود، می تواند هر نامی داشته باشد اما باید اولین پارامتر هر تابع در کلاس باشد:
مثال
class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("Hello my name is " + abc.name)
p1 = Person("John", 36)
p1.myfunc()
تغییر مقدار ویژگی ها
شما می توانید خصوصیات یک شی را به صورت زیر تغییر دهید:
مثال
p1.age = 40
حذف ویژگی ها
با استفاده از کلیدواژه del
می توانید خصوصیات اشیاء را حذف کنید:
مثال
del p1.age
حذف شی
همچنین با استفاده از کلیدواژه del
می توانید خود اشیاء را نیز حذف کنید:
مثال
del p1
دستور pass
تعریف یک کلاس نمی تواند خالی باشد، اما اگر به هر دلیلی یک کلاس بدون محتوا دارید، می توانید از دستور pass
برای جلوگیری از خطا استفاده نمایید.
مثال
class Person:
pass