ایجاد یک Class در پایتون
برای ایجاد یک Class از کلمه کلیدی Class استفاده می کنیم.
مثال: در این مثال یک Class با نام MyClass با ویژگی با نام X ایجاد می کنیم.
class MyClass:
x = 5
ایجاد یک Object یا شی در پایتون
بعد از تعریف Class می توانیم از نام Class برای ایجاد Object استفاده کنیم.
مثال: در این مثال یک Object یا شی با نام P1 از کلاس MyClass ایجاد می کند و مقدار x را چاپ می کند.
p1 = MyClass()
print(p1.x)
تابع ()__init__
مثال های بالا که در مورد ایجاد Class ها و Object ها زده شد ساده ترین نوع آن ها هستند و در برنامه های واقعی کاربرد آن چنانی نخواهند داشت.
برای درک معنای Class ها باید تابع داخلی ()__init__ را درک کنید.
همه کلاس های ایجاد شده تابعی به نام ()__init__ دارند که هنگام شروع کلاس اجرا می شود.
از تابع ()__init__ برای اختصاص دادن مقدار به خصوصیت یک Object و یا سایر کارهایی که هنگام ایجاد Object ضروری است استفاده می کنیم.
مثال: در این مثال یک Class با نام Person ایجاد می کنیم و از تابع ()__init__ برای اختصاص دادن مقادیر برای خصوصیات name و age استفاده می کنیم.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name)
print(p1.age)
توجه: هر بار که Class برای ایجاد Object جدید استفاده می شود، تابع __init__() به طور خودکار فراخوانی می شود.
متد های Object یا شی
Objects می توانند شامل متدهایی باشند. متدها در اشیاء توابعی هستند که به Object تعلق دارند.
مثال: بیایید یک متد در کلاس Person ایجاد کنیم.
در این مثال یک تابع ایجاد می کنیم که کلمه “hello” را چاپ کند و آن را روی Object ایجاد شده 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()
تغییر خصوصیات Objects
می توانید خصوصیات یک Object را مانند مثال زیر تغییر دهید.
مثال: در این مثال سن P1 را بر روی 40 تنظیم کنید.
p1.age = 40
حذف ویژگی های یک Object
با استفاده از کلمه کلیدی del می توانید خصوصیات در Objects را حذف کنید.
مثال: در این مثال ویژگی age را از شی P1 حذف می کنیم.
del p1.age
در این مثال به دلیل اینکه ویژگی age را حذف کردیم، موقع چاپ با خطا مواجه می شویم.
حذف یک Object
با کلمه کلیدی del می توانید Objects را نیز حذف کنید.
مثال: در این مثال شی P1 را حذف کرده ایم.
del p1
دستور pass در کلاس ها
در تعریف کلاس ها بلوک آن نمی تواند خالی از دستور باشد، اما به هر دلیل اگر کلاسی دارید که خالی از دستور و محتوا است، برای جلوگیری از ایجاد خطا از دستور pass استفاده کنید.
مثال: در این مثال به دلیل وجود نداشتن دستور در بلوک کلاس برای جلوگیری از ایجاد خطا از دستور pass استفاده کرده ایم.
class Person:
pass
مطالعه بیشتر در مورد شی گرایی : برنامه نویسی شی گرا یا object oriented programming چیست؟