کلاس ها/اشیاء در پایتون
یک کلاس مانند یک سازنده شیء یا یک “طرح” برای ایجاد اشیا است.
ساخت یک کلاس
برای ایجاد یک کلاس، از کلمه کلیدی class استفاده کنید:
ساخت شیء (object)
اکنون می توانیم از کلاسی به نام MyClass برای ایجاد اشیاء استفاده کنیم:
تابع __init__()
مثالهای بالا کلاسها و اشیاء در سادهترین شکل خود هستند و واقعاً در برنامههای واقعی کاربردی نیستند.
برای درک معنای کلاس ها باید تا داخلی __init__()
را درک کنیم.
همه کلاس ها دارای تابعی به نام __init__()
هستند که همیشه زمانی که کلاس شروع می شود اجرا می شود.
از تابع __init__()
برای تخصیص مقادیر به ویژگیهای یک شیء یا سایر عملیاتی که هنگام ایجاد شیء لازم است انجام دهید استفاده کنید:
مثال
__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)
متدهای شیء
اجازه دهید یک متد در کلاس Person ایجاد کنیم:
مثال
تابعی را وارد کنید که یک تبریک چاپ می کند و آن را روی شیء 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 نامگذاری شود، شما می توانید آن را هر چه دوست دارید صدا بزنید، اما باید اولین پارامتر هر تابع در کلاس باشد:
مثال
به جای self از کلمات mysillyobject و abc استفاده کنید:
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()
تغییر ویژگیهای شیء
شما می توانید ویژگی های اشیاء را مانند مثال زیر تغییر دهید:
حذف ویژگیهای شیء
del
می توانید ویژگیهای اشیاء را حذف کنید: حذف اشیاء
del
می توانید اشیاء را حذف کنید: عبارت pass
تعاریف کلاس نمی تواند خالی باشد، اما اگر به دلایلی تعریف کلاسی بدون محتوا دارید، برای جلوگیری از دریافت خطا، عبارت pass را قرار دهید.