آشنایی با تابع سازنده در کلاس پایتون
پایتون یک زبان برنامهنویسی قدرتمند است که به شما اجازه میدهد تا برنامههای پیچیده و هوشمندانه بنویسید. یکی از مفاهیم مهم در پایتون، کلاسها هستند. کلاسها به شما کمک میکنند تا اشیاء مختلف را تعریف کنید و رفتارهایشان را مشخص کنید. در این درس، میخواهیم با یکی از مفاهیم پیشرفتهتر در کلاسها، یعنی تابع سازنده، آشنا شویم.
تعریف تابع سازنده
یک تابع سازنده (به انگلیسی: Constructor) در پایتون، یک روش خاص در کلاس است که هنگام ایجاد یک شیء جدید از کلاس، به طور خودکار فراخوانی میشود. هدف اصلی تابع سازنده، مقداردهی اولیه به متغیرهای عضو کلاس و آمادهسازی شیء برای استفاده است.
در پایتون، تابع سازنده با نام `__init__` شناخته میشود. این تابع به طور خودکار هنگام ایجاد شیء جدید فراخوانی میشود.
ساختار تابع سازنده
ساختار تابع سازنده در پایتون به صورت زیر است:
class نام_کلاس:
def __init__(self, پارامترها):
# کدهای مربوط به مقداردهی اولیه
در این ساختار، `نام_کلاس` نام کلاسی است که میخواهیم تعریف کنیم، و `پارامترها` متغیرهایی هستند که میخواهیم به عنوان ورودی به تابع سازنده بدهیم.
مثال ساده از تابع سازنده
فرض کنید میخواهیم یک کلاس به نام `موتور` تعریف کنیم که شامل دو متغیر `رنگ` و `مدل` باشد. میتوانیم از تابع سازنده برای مقداردهی اولیه به این متغیرها استفاده کنیم:
class موتور:
def __init__(self, رنگ, مدل):
self.رنگ = رنگ
self.مدل = مدل
# ایجاد شیء جدید از کلاس موتور
موتور_جدید = موتور("قرمز", "پژو 405")
print(موتور_جدید.رنگ) # خروجی: قرمز
print(موتور_جدید.مدل) # خروجی: پژو 405
در این مثال، تابع سازنده `__init__` دو پارامتر `رنگ` و `مدل` میگیرد و آنها را به متغیرهای عضو کلاس نسبت میدهد.
استفاده از تابع سازنده برای محاسبات
تابع سازنده میتواند برای انجام محاسبات اولیه نیز استفاده شود. فرض کنید میخواهیم یک کلاس به نام `دانشآموز` تعریف کنیم که شامل متغیرهای `نام`, `سن` و `معدل` باشد. میتوانیم از تابع سازنده برای محاسبهی سطح علمی دانشآموز بر اساس معدل استفاده کنیم:
class دانش_آموز:
def __init__(self, نام, سن, معدل):
self.نام = نام
self.سن = سن
self.معدل = معدل
if معدل >= 17:
self.سطح_علمی = "عالی"
elif 15 <= معدل < 17:
self.سطح_علمی = "خوب"
else:
self.سطح_علمی = "نیاز به تلاش"
# ایجاد شیء جدید از کلاس دانشآموز
دانش_آموز_جدید = دانش_آموز("زهرا", 16, 18)
print(دانش_آموز_جدید.نام) # خروجی: زهرا
print(دانش_آموز_جدید.سطح_علمی) # خروجی: عالی
در این مثال، تابع سازنده `__init__` علاوه بر مقداردهی اولیه به متغیرها، سطح علمی دانشآموز را نیز محاسبه میکند.
تابع سازنده در کلاسهای پیشرفتهتر
در کلاسهای پیشرفتهتر، میتوان از تابع سازنده برای انجام عملیات پیچیدهتر استفاده کرد. فرض کنید میخواهیم یک کلاس به نام `بانک` تعریف کنیم که شامل متغیرهای `نام_بانک`, `شماره_حساب` و `موجودی` باشد. میتوانیم از تابع سازنده برای ایجاد حساب بانکی جدید و انجام تراکنشهای اولیه استفاده کنیم:
class بانک:
def __init__(self, نام_بانک, شماره_حساب, موجودی_اولیه):
self.نام_بانک = نام_بانک
self.شماره_حساب = شماره_حساب
self.موجودی = موجودی_اولیه
def واریز(مبلغ):
self.موجودی += مبلغ
def برداشت(مبلغ):
if مبلغ <= self.موجودی:
self.موجودی -= مبلغ
else:
print("موجودی کافی نیست.")
# ایجاد شیء جدید از کلاس بانک
بانک_جدید = بانک("بانک ملی", "123456789", 1000000)
print(بانک_جدید.نام_بانک) # خروجی: بانک ملی
print(بانک_جدید.موجودی) # خروجی: 1000000
در این مثال، تابع سازنده `__init__` برای مقداردهی اولیه به متغیرهای کلاس استفاده میشود.
نکات مهم در استفاده از تابع سازنده
- تابع سازنده تنها یک بار و در زمان ایجاد شیء جدید فراخوانی میشود.
- تابع سازنده برای مقداردهی اولیه به متغیرهای عضو کلاس استفاده میشود.
- میتوان در تابع سازنده، محاسبات اولیه و عملیات تنظیماتی انجام داد.
تمرین
فرض کنید میخواهیم یک کلاس به نام `مکتب` تعریف کنیم که شامل متغیرهای `نام_مکتب`, `آدرس` و `تعداد_دانشآموزان` باشد. یک تابع سازنده بنویسید که این متغیرها را مقداردهی اولیه کند و همچنین سطح آموزشی مکتب را بر اساس تعداد دانشآموزان مشخص کند:
- کمتر از 100 دانشآموز: "کوچک"
- بین 100 تا 500 دانشآموز: "متوسط"
- بیشتر از 500 دانشآموز: "بزرگ"
class مکتب:
def __init__(self, نام_مکتب, آدرس, تعداد_دانش_آموزان):
self.نام_مکتب = نام_مکتب
self.آدرس = آدرس
self.تعداد_دانش_آموزان = تعداد_دانش_آموزان
if تعداد_دانش_آموزان < 100:
self.سطح_آموزشی = "کوچک"
elif 100 <= تعداد_دانش_آموزان <= 500:
self.سطح_آموزشی = "متوسط"
else:
self.سطح_آموزشی = "بزرگ"
# ایجاد شیء جدید از کلاس مکتب
مکتب_جدید = مکتب("مکتب صالحین", "کابل", 200)
print(مکتب_جدید.نام_مکتب) # خروجی: مکتب صالحین
print(مکتب_جدید.سطح_آموزشی) # خروجی: متوسط
خلاصه
در این درس، با مفهوم تابع سازنده در کلاسهای پایتون آشنا شدیم. تابع سازنده با نام `__init__` شناخته میشود و برای مقداردهی اولیه به متغیرهای عضو کلاس و انجام محاسبات اولیه استفاده میشود. با استفاده از تابع سازنده، میتوانید اشیاء پیچیدهتر و هوشمندانهتری ایجاد کنید.
"یک برنامهنویس خوب، با یادگیری مفاهیم پایه شروع میکند و به تدریج به سمت مفاهیم پیشرفتهتر حرکت میکند."
با تمرین و تکرار، میتوانید مهارتهای برنامهنویسی خود را بهبود بخشید و پروژههای پیچیدهتری را پیادهسازی کنید. به یاد داشته باشید که تمرین و تجربه، کلید یادگیری برنامهنویسی است.