شروع کار با شی گرایی

به دوره آموزش پایتون خوش آمدید. برای رفتن به اولین جلسه این دوره، اینجا کلیک کنید. جلسه قبل درمورد مقدمات شی گرایی صحبت کردیم.

میخواهیم با نوشتن یک کلاس ساده شروع کنیم، برای شروع از کلمه کلیدی class استفاده میکنیم و بعد از آن یک نام برای آن مشخص میکنیم. اسم کلاس را person میگذاریم که یک سری صفت مانند نام، قد و وزن به آن میدهیم. برای این کار به ازای هر صفت در بدنه کلاس یک متغیر تعریف میکنیم:

class person():
    name = ""
    ghad = ""
    vazn = ""

در اینجا به این متغیر ها یک رشته خالی به عنوان مقدار اولیه داده شده.

حالا که این صفات را داریم میخواهیم یک رفتار یا به زبان فنی، متد تعریف کنیم. متد ها را به صورت یک تابع مینویسیم. میخواهیم متدی داشته باشیم به نام say_hello که با صدا زدن آن، هر شی سلام کند و خودش را معرفی کند. پس کد های زیر را به بدنه کلاس اضافه میکنیم:

def say_hello(self):
    print("hello. my name is "+self.name)

سوالی که پیش می آید این است که self چیست و اینجا چه میخواهد؟ self در لغت به معنی ( خود ) میباشد. به طور خلاصه ما باید در بدنه کلاس به طور پیشفرض به تمام متد ها self را پاس بدهیم تا در هنگام اجرای این متد روی هر شی، آن شی بتواند خودش را بشناسد و تغییرات را روی خودش انجام دهد نه شی دیگری از آن کلاس. در این مثال از self.name() استفاده کرده ایم، شی میداند باید نام خودش را برگرداند.

تا اینجا کلاس ما کامل شده، از بدنه آن خارج میشویم و میخواهیم دو شی یا آبجکت از روی آن بسازیم:

obj_1 = person()
obj_2 = person()

این شی ها هنوز اسم و قد و وزن ندارند و مقدار اولیه آن، یک رشته خالی است. میخواهیم آن ها را مقدار دهی کنیم:

obj_1.name = "Ali"
obj_1.ghad = 170
obj_1.vazn = 70

این مقادیر فقط برای آبجکت obj_1 معتبر است و روی دیگر آبجکت ها تاثیری نمیگذارد.

حال برای آبجکت دوم:

obj_2.name = "Mohammad"
obj_2.ghad = 180
obj_2.vazn = 75

اکنون راحت تر از قبل به مقادیر درونی این اشیا دسترسی داریم. برای مثال میخواهیم آن ها را print کنیم:

print(obj_1.name)
print(obj_2.ghad)
print(obj_1.vazn)
# Ali
# ۱۸۰
# ۷۰

برای استفاده کردن از متد ها کافیست به صورت زیر عمل کنیم.

obj_1.say_hello()
obj_2.say_hello()
# hello. my name is Ali
# hello. my name is Mohammad

در جلسه بعد درمورد تابع سازنده صحبت خواهیم کرد.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *