مفهوم شئ گرایی و استفاده از آن در پایتون
شئ گرایی چیست؟
شئ گرایی در واقع یک نوع الگو و روش برای برنامه نویسی هست که این روش از زندگی انسانی الگو برداری شده است.
هر شئ که در دنیای فیزیکی ما وجود دارد دو قسمت دارد یکسری مقادیر عددی و یکسری ویژگی ها که آن شئ را معرفی میکند.
برای مثال یک شئ تاس را در نظر بگیرید این شئ دارای یکسری مقادیر مثل طول ,عرض و ارتفا و همچنین رنگ و جنس علاوه بر آن دارای ویژگی های رفتاری و کاربردی هم هستند. برای مثال تاس میتواند یک عدد رندم بین یک تا شش به ما بدهد.
حال به کمک برنامه نویسی شئ گرا میتوانیم یک مدل یا الگو برای ساخت شئ های مختلف بسازیم که در جریان برنامه بتوانیم از مقادیر و ویژگی آن استفاده کنیم. این الگو که گفته شد همانند کارخانه اتوموبیل سازی عمل میکند و ما از روی آن مدل میتوانیم اتوموبیلهای بیشماری بسازیم که دارای ظاهری متفاوت از هم و دارای ویژگی های متفاوت از هم هستند (اما همه از نوع ماشین هستند ).
استفاده از شئ گرایی در پایتون
برای ساختن یه همچین الگویی در پایتون از کلمه کلیدی class استفاده میکنیم.
و مثالی که برای تاس ها زده بودیم را ببنید.
from random import randint
class Tass:
X = 2
Y = 2
H = 2
def Do (self):
return randint(1,6)
Tass1 = Tass()
Tass2 = Tass()
print(Tass1.Do())
print(Tass2.Do())
print(Tass1.X)
print(Tass1.Y)
در این تکه کد ما یک الگو برای ساخت تاس قرار دادیم که نام الگو ما Tass میباشد. در این الگو 3 مقدار ثابت طول و عرض و ارتفا را قرار دادیم و سپس یک ویژگی برای شئ های ساخته از این الگو قرار دادیم به نام Do این ویژگی از کتابخانه رندم استفاده کرده تا با هربار استفاده شدن از این ویژگی یک عدد رندمی بین 1 تا 6 به ما بدهد. (آشنایی و کار با کتابخانه ها یا همان ماژول ها در پایتون)
سپس 2 تاس از روی این الگو ساختیم به نام های Tass1 و Tass2 سپس از ویژگی Do این دو تاس استفاده کردیم و خروجی آن را پرینت کردیم و بعد با Tass1.X و Tass1.Y میتوانیم از طول و عرض این تاس ها باخبر شویم.
کمی جلوتر به کلمه self داخل تابع Do میپردازیم.
خروجی کد:
1
4
2
2
تابع سازنده
در مثال بالا تمامی تاس های ساخته شده تماما مشابه هم هستند اما اگر بخواهیم تاسهایی با اندازههای (طول و عرض و ارتفا) متفاوت داشته باشیم چه باید بکنیم؟
تابعی وجود دارد برای کلاس ها که این تابع هنگامی که یک نمونه از روی کلاس ساخته میشود، اجرا کند و دیگر نیازی به فراخوانی برای اجرا شدن آن نیست به این تابع , تابع سازنده Constructor گفته میشود و در پایتون به نام __init__ وجود دارد.
به مثال زیر توجه کنید:
from random import randint
class Tass
X = 2
Y = 2
H = 2
def Do (self):
return randint(1,6)
def __init__(self):
print('init is run')
Tass1 = Tass()
Tass2 = Tass()
در این تکه کد داخل تابع __init__ دستور پرینت وجود دارد با اجرای تکه کد زمانی که برنامه در حال ساخت Tass1 میباشد این تابع یک بار اجرا شده و init is run را چاپ میکند و سپس هنگام ساخت Tass2 نیز دوباره همین اتفاق میافتد
و خروجی به این شکل میشود :
init is run
init is run
شاید تا اینجا متوجه شده باشید که توابعی که در کلاس ها ساخته میشود دارای یک ورودی self هستند و هیچ داده ای به آن نسبت داده نمیشود این self در اصل معرف آن شئ خاص میباشد به مثال زیر توجه کنید:
from random import randint
class Tass:
def Do (self):
return randint(1,6)
def __init__(self,x,y,h):
self.x = x
self.y = y
self.h = h
Tass1 = Tass(2,2,2)
Tass2 = Tass(4,4,4)
print(Tass1.x)
print(Tass2.x)
در این تکه کد ما در تابع سازنده (همان تابعی که هنگام ساخت شئ خود به خود ساخته میشد) self.x ساختیم و آن را برابر x که ورودی دوم همان تابع هست قرار دادیم این کار برای این است که آن شئ خاص که در حال ساخته شدن هست یک مقدار x ساخته شود و این مقدار همان مقداری باشد که هنگام ساخته شدن ما به کلاس دادیم.
اگر self که همیشه در توابع داخل کلاس ها میباشد را در نظر نگیریم تابع __init__ دارای 3 ورودی هست که موقع ساخت تاسها باید به آن بدهیم.
خروجی کد :
2
4
کمی از تاس ها دور شویم فرض کنید شما مدیر عامل یک شرکت بزرگ هستید و کارمندانی را مدیریت میکنید. به برنامه ای نیاز دارید که کمک کند به مشخصات هر دسترسی داشته باشید و حقوق آنها را پیشبینی کنید .
class Employee:
def __init__(self,age,degree,history):
self.age = age
self.degree = degree
self.history = history
def Bonus(self):
if self.age >= 10 and self.age < 20:
return 1000
elif self.age >= 20 and self.age < 30:
return 2000
else:
return 3000
ali_hashemi = Employee(19,'diplom',1
ahmad_moradi = Employee(28,'lisans',5
print(ali_hashemi.Bonus())
print(ahmad_moradi.Bonus())
print(ahmad_moradi.degree)
print(ali_hashemi.history)
و خروجی کد :
1000
2000
lisans
1
آموزش بعدی برسی Error Handling در زبان پایتون
نظرات(3)
dapCheare
The complex structure was solvated by inserting it into a 60 в„« diameter TIP3P water sphere and deleting solvent molecules that have heavy atoms at less then 2 <a href=https://bestcialis20mg.com/>viagra vs cialis</a>
1401/10/03 پاسخ
پریسا سردشتی
واقعا قشنگ ترین مفهوم تو برنامه نویسیه :)
1400/06/04 پاسخ
sadegh
too emtehan be karam oomad damet garm
1400/04/31 پاسخ
نظر خود را وارد کنید