آموزش init در پایتون با مثال – به زبان ساده

۷۸
۱۴۰۴/۰۸/۲۶
۱۱ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

از متد init در پایتون به عنوان سازنده کلاس استفاده می‌کنیم. هر وقت که شیئی از روی کلاس ساخته می‌شود، این متد به صورت خودکار فراخوانی شده و صفات اصلی آن شیء را مقداردهی می‌کند. در واقع با کمک متد init  می‌توانیم وضعیت اولیه نمونه‌های کلاس را در لحظه ساخت مشخص کنیم. با کمک این متد حتی می‌توان عملیات خاصی را درست در لحظه ساخته شدن اشیاء اجرا کرد. شیء‌گرایی در پایتون یکی از ویژگی‌های پیشرفته این زبان برنامه نویسی است. برای کسب مهارت در کار با تکنولوژی شیء‌گرایی باید با مفاهیمی مانند متد init، وراثت و غیره آشنا باشیم.

آنچه در این مطلب می‌آموزید:
  • متوجه می‌‌شوید که چرا به متد init سازنده گفته می‌شود و عملکرد آن چیست.
  • با سینتکس متد init آشنا شده و روش نوشتن آن را یاد می‌گیرید.
  • با بررسی چند مثال مختلف استفاده از init را در کلاس‌های پایتون و همراه با ارث‌بری می‌آموزید.
  • با انواع سازنده init آشنا شده و روش نوشتن و کاربرد آن‌ها را می‌آموزید.
  • روش استفاده از متد init را در پلی‌مورفیسم یاد می‌گیرید.
  • می‌بینید که چطور ویژگی‌های کلاس والد از طریق init به فرزند به ارث می‌رسند.
آموزش init در پایتون با مثال – به زبان سادهآموزش init در پایتون با مثال – به زبان ساده
997696

در این مطلب از مجله فرادرس با متد init در پایتون آشنا می‌شویم. ابتدا این متد را به شکل ساده‌ای تعریف کرده و سپس روش کار آن را توضیح می‌دهیم. بعد از آن، سینتکس متد init  را همراه با چند مثال ساده بررسی می‌کنیم. در ادامه مطلب هم انواع سازنده و کاربرد‌های این متد را توضیح خواهیم داد.

init در پایتون چیست؟

init در پایتون یکی از متدهای ویژه است. به این متد، «سازنده» (Constructor) هم گفته می‌شود. هر بار نمونه‌ای از روی کلاس‌های پایتون می‌سازیم، متد init به صورت خودکار فراخوانی می‌شود. با کمک متد init می‌توانیم صفات و متغیرهای اشیا را مقداردهی بکنیم.

با کمک مثال ساده‌ای در کادر پایین، روش استفاده از init  را نمایش داده‌ایم.

بعد از اجرای کدهای بالا، خروجی پایین در کنسول پایتون نمایش داده می‌شود.

Name: John
Age: 25

روش کار متد init در پایتون چیست؟

متد init در پایتون در داخل کلاس‌ها تعریف می‌شود. این متد برای مقداردهی اولیه به ویژگی‌های اشیا به کار می‌رود. هر شیء دارای صفات مختص به خود است. به محض ساخته شدن اشیاء صفات آن‌ها نیز باید مقدار بگیرند. برای مقداردهی به این صفات از init  استفاده می‌کنیم.

در زمان تعریف متد init  باید آن را به شکل __ init __(self)  بنویسیم. در این سینتکس به غیر از خود عبارت init سه ویژگی دیگر هم وجو دارند.

  • عبارت self
  • Underscore-های دوگانه __ در دو طرف کلمه init
  • پارامتر‌های init - که بعد از self  نوشته می‌شوند.

تا این جای مطلب با متد init در پایتون آشنا شده و کاربرد آن را به شکل مختصری یاد گرفتید. در ادامه مهم‌ترین اجزای این متد را توضیح داده و با کمک چند مثال روش‌های استفاده از آن را هم بررسی کرده‌ایم. در صورتی که به مطالعه این نوع مطالب علاقه دارید، پیشنهاد می‌کنیم اپلیکیشن مجله فرادرس را نصب کنید.

برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.

در ادامه این بخش، تمام نکات فهرست بالا را توضیح داده‌ایم.

عبارت self

پارامتر self  همیشه باید به عنوان آرگومان پیش‌فرض برای این متد تعریف شود. این عبارت نشان دهنده آن است که متد init  به شیء ساخته شده توسط همین کلاس اشاره می‌کند. البته این کار را می‌توان برای تمام متدهای تعریف شده در کلاس انجام داد. نوشتن پارامتر self یعنی اینکه این متد هر مقداری بگیرد یا هر عملیاتی انجام بدهد فقط مختص به همین شیء ساخته شده از روی کلاس است. در واقع عبارت self  مانند نام موقتی برای اشیاء عمل می‌کند.

Underscore-های دوگانه __

به متد init  بعضی از اوقات «init با خط زیر» (Double Underscore Init) یا «داندر اینیت» (Dunder Init) هم می‌گویند. این به خاطر آن است که در زمان تعریف متد init  دو خط زیر هم در دو طرف آن می‌نویسیم. وجود دو خط زیر در دو طرف نام به معنای این است که متد مورد نظر جزو متدهای ویژه است. خطوط Underscore دوگانه، نشان دهنده آن هستند که پایتون از متد مورد نظر به صورت خودکار و در داخل خودش استفاده می‌کند.

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

کامپیوتر و کدهای برنامه نویسی برای ساخت خانه نارنجی
متد init در پایتون برای مقداردهی اولیه به صفات اشیا به کار برده می‌شود.

پارامتر‌های init

در زمان نوشتن کلاس، تعریف پارامتر برای متد init  اختیاری است. یعنی اینکه می‌توانیم هر تعداد پارامتر که خواستیم به آن اختصاص بدهیم یا آن را فقط با پارامتر self  تعریف کنیم. حتی می‌توان بعضی از پارامتر‌ها را با مقدار‌های پیش‌فرض برای متد init  تعریف کرد. در بخش‌های بعد انواع روش اختصاص پارامتر به متد init  را توضیح داده‌ایم.

پایتون از قابلیت «سربارگذاری سازنده» (Constructor Overloading) پشتیبانی نمی‌کند. اما با کمک آرگومان‌های تعریف شده در سازنده‌ها می‌توان از پلی مورفیسم در پایتون استفاده کرد. در بخش‌های بعد این مسئله را با کمک مثال ساده‌ای بررسی کرده‌ایم.

چگونه از فرادرس برای یادگیری پایتون کمک بگیریم؟

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

مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python – مقدماتی تا پیشرفته فرادرس
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python از مقدماتی تا پیشرفته هدایت شوید.

گروه آموزشی فرادرس در زمینه تولید فیلم‌های آموزشی چندین سال تجربه موفق داشته است. این فیلم‌های حوزه‌های بسیار متنوعی را پوشش می‌دهند. افراد زیادی با کمک فیلم‌های فرادرس موفق شدند که به مهارت‌های مورد نیاز خود دست پیدا کنند و در موقعیت شغلی مورد نظر خود مشغول شوند. شما هم با تماشای فیلم‌های مربوط به حوزه مورد علاقه خود و تمرین مطالب تدریس شده می‌توانید مهارت مورد نیاز خود را بدست بیاورید.

در پایین، چند مورد از فیلم‌های آموزشی سطح مبتدی تا پیشرفته پایتون را معرفی کرده‌ایم.

در ادامه مطلب، ابتدا سینتکس متد init  را تعریف کرده‌ایم. بعد از آن هم چند مثال مختلف را بررسی می‌کنیم.

سینتکس و مثال‌های init در پایتون

با استفاده از سینتکس زیر به راحتی می‌توانیم سازنده init  را در کلاس‌های پایتون تعریف کنیم.

در کادر زیر و به کمک زبان پایتون، کلاسی با نام Teacher  نوشته‌ایم. با توجه به آن بهتر می‌توانید عملکرد متد init  را درک کنید.

بعد از اجرای کدهای بالا، خروجی پایین در کنسول پایتون نمایش داده می‌شود.

Mostafa Rashidi  teaches  Computer Science

در این کد، کلاس Teacher دو صفت زیر را به تمام اشیا خود می‌دهد.

  • name: از این صفت برای اختصاص دادن نام به اشیا این کلاس، استفاده می‌شود.
  • Subject: از این صفت هم برای مشخص کردن رشته تدریس، استفاده می‌شود.

توجه کنید که نام و رشته تدریس هر معلم منحصر به فرد است و این اطلاعات با هم اشتباه گرفته نمی‌شوند.

در سناریو بعدی می‌خواهیم با کمک متد init  از «چند ریختی» (Polymorphism) استفاده کنیم. برای انجام این کار می‌توانیم سینتکس نوشته شده در پایین را به کار ببریم.

در کدهای بالا، آرگومان‌های نوشته شده در متغیر args* نوع مقداردهی اولیه پارامتر‌ها را مشخص می‌کنند. برای کمک به شفاف‌تر شدن موضوع مثال مناسبی را در کادر پایین، نوشته‌ایم. در صورتی که نسبت به کلمه کلیدی *args ناآشنا هستید، پیشنهاد می‌کنیم که مطلب مربوط به آن را در مجله فرادرس مطالعه بکنید.

بعد از اجرای کدهای بالا، خروجی پایین در کنسول پایتون نمایش داده می‌شود.

Name of the teacher is  Mostafa Rashidi
Mostafa Rashidi  teaches  Computer Science
Strength of the class is  32

انواع سازنده init

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

  • سازنده init  پیش‌فرض
  • سازنده init  با پارامترهای سفارشی
  • سازنده init  با پارامترهای پیش‌فرض
انواع سازنده init در پایتون
انواع سازنده init در پایتون

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

در ادامه این قسمت از مطلب، تمام موارد فهرست بالا را توضیح داده‌ایم.

سازنده init پیش‌فرض

«سازنده init  پیش‌فرض» (Default __init__ Constructor) در پایتون به متدی می‌گویند که هیچ پارامتری به آن داده نشده است. عبارت self  تنها پارامتر این سازنده است که به صورت الزامی نوشته می‌شود. self  مرجعی برای اشاره به اشیاء ساخته شده از آن کلاس است.

برنامه نویس پایتون که در حال انتخاب بین شی و کلاس است.

در کادر پایین، سینتکس مورد استفاده برای تعریف سازنده init  پیش‌فرض را نوشته‌ایم.

در کادر زیر هم سینتکس مورد استفاده برای ساخت شیء از روی کلاسی را نوشته‌ایم که از سازنده init  پیش‌فرض استفاده می‌کند.

برای کمک به درک بهتر موضوع، کلاس دلخواهی را با نوع سازنده init  پیش‌فرض تعریف کردیم. سپس از روی این کلاس شیئی ساختیم. در نهایت هم متد ساخته شده در این شیء را اجرا کردیم.

بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Sum is  83

در کادر بالا کلاس Defult  تعریف شده است. هنگام ساخت اشیا این کلاس نمی‌توانیم ویژگی خاصی به آن‌ها اختصاص بدهیم. اما خود پایتون به صورت خودکار دو ویژگی var1  و var2  را اختصاص می‌دهد. این ویژگی‌ها مقادیر ثابت و غیرقابل تغییری دارند. با جرای متد .add()  بر روی اشیا این کلاس نتیجه ثابت sum is 83  نمایش داده می‌شود. فرقی نمی‌کند چه تعداد شیء و در چه قسمت‌هایی از برنامه از روی این کلاس بسازیم. همیشه نتیجه ثابت است.

سازنده init با پارامترهای سفارشی

هر وقت بخواهیم چند آرگومان به سازنده کلاس ارسال کنیم باید از «سازنده‌ init  با پارامترهای سفارشی» (Parameterised __init__ Constructor) کمک بگیریم. این نوع از init  بعد از عبارت کلیدی self  به تعداد مورد نیاز، پارامتر دریافت می‌کند. در پایین، سینتکس تعریف سازنده init  با پارامتر‌های سفارشی را نوشته‌ایم.

برای ساخت شیء از روی کلاسی که با این نوع سازنده init  تعریف شده باید به روش زیر عمل کنیم.

به منظور کمک به درک بهتر موضوع، مثال ساده‌ای را در کادر پایین پیاده‌سازی کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی پایین در کنسول پایتون نمایش داده می‌شود.

Sum is  257

در کدهای بالا را در فهرست پایین توضیح داده‌ایم.

  1. در این برنامه کلاس Defult  را تعریف کردیم.
  2. در زمان نوشتن متد init  بعد از کلمه کلیدی self  دو پارامتر n1  و n2 را نیز نوشته‌ایم.
  3. از این پارامتر‌های برای مقداردهی به متغیرهای var1  و var2  استفاد می‌کنیم.
  4. در خط ۹ و ۱۰ هم متد .add() را نوشته‌ایم. وظیفه این متد جمع مقداری ورودی و چاپ نتیجه در خروجی است.
  5. در خط بعدی شیئی به نام obj  با مقادیر دلخواه 121  و 136  ساخته‌ایم.
  6. با فراخوانی متد .add()  حاصل جمع این دو عدد در خروجی نمایش داده می‌شود.
برنامه نویسی که با سرعت و قدرت در حال کار است.

با کمک این کلاس می‌توانیم حاصل جمع هر جفت عدد دلخواهی را بدست بیاوریم. برای این کار فقط کافی است که شیئی از روی کلاس ساخته و اعداد مورد نظر را به عنوان پارامتر به آن ارسال کنیم. سپس متد .add() را فراخوانی می‌کنیم.

متد init با پارامترهای پیش‌فرض

همین طور که می‌دانید در زمان تعریف توابع پایتون می‌توان مقادیر پیش‌فرضی را به عنوان آرگومان به آن‌ها ارسال کرد. این اصل در مورد سازنده‌ها و متدهای کلاس‌ها هم برقرار است. البته این ویژگی تقریبا در بیشتر زبان‌های برنامه نویسی پرکاربرد وجود دارد. متد init  هم شامل این موضوع می‌شود. برای اینکه کاربر یا برنامه مجبور نباشد برای تعریف هر شیء به کلاس مقدار ارسال کند، می‌توانیم مقادیری را به عنوان پیش‌فرض برای آرگومان‌های آن تعریف کنیم.

در کادر پایین، سینتکس مورد استفاده برای ارسال مقادیر پیش‌فرض به متد init  را نوشته‌ایم.

به منظور کمک به شفاف‌تر شدن موضوع، مثال ساده‌ای از مقداردهی اولیه به پارامتر‌های متد init  را پیاده‌سازی کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی پایین در کنسول پایتون نمایش داده می‌شود.

Mostafa Rashidi  is the name of the teacher.
Ehsan Salehi  is the name of the teacher.

تمام کدهای برنامه بالا را خط‌به‌خط در فهرست پایین توضیح داده‌ایم.

  1. در مثال بالا کلاس Teacher  را تعریف کردیم.
  2. در داخل این کلاس و در بخش تعریف متد init  - خط ۳ - برای ویژگی name مقدار پیش‌فرض Mostafa Rashidi رانوشته‌ایم.
  3. در خطوط ۶ و ۷ با تعریف متد show(self): دستوری را برای نمایش نام معلم نوشته‌ایم.
  4. در خطوط ۹ و ۱۰ اشیاء t1  و t2  را تعریف کرده‌ایم. شیء t1  بدون تخصیص مقدار تعریف شده است. اما به شیء t2  عبارت Ehsan Salehi را ارسال کرده‌ایم.
  5. در انتها - خطوط ۱۱ و ۱۲ - متد show(self):  را برای هر دو شیء فراخوانی کردیم.

کاربرد متد init در وراثت

همین طور که در بخش‌های بالا توضیح داده و در مثال‌ها بررسی کردیم، از متد init  برای مقداردهی به صفات اشیا استفاده می‌کنیم. در این قسمت از مطلب، می‌خواهیم با عملکرد متد init  در زمان وراثت آشنا شویم.

وراثت به کلاس فرزند اجازه می‌دهد از متد init  کلاس والد خود استفاده کند. به غیر از ویژگی‌های متد init  کلاس والد، کلاس فرزند با کمک وراثت سایر توابع و اعضای داده‌ای آن را نیز به ارث می‌برد.

چند شی که از همدیگر متد init در پایتون را ارث می‌برند.

متد init  کلاس والد در داخل متد init  کلاس فرزند فراخوانی می‌شود. شاید کلاس والد به آرگومان خاصی نیاز داشته باشد. در این صورت هنگام ساخت نمونه‌ای از کلاس فرزند نیز باید آن مقدار ارسال بشود. هر وقت شیئی از کلاس فرزند ساخته بشود تمام ویژگی‌های کلاس والد خود را به ارث می‌برد. پس باید برای تمام پارامتر‌های کلاس والد هم مقدار مشخصی را اختصاص داد. مگر آنکه این پارامترها به صورت پیش‌فرض دارای مقدار باشند.

بعد از اجرای کدهای بالا، خروجی پایین در کنسول پایتون نمایش داده می‌شود.

Initialising the name attribute
Age attribute of base class is initialised
Name of the teacher is  Allen Park
Age of the teacher is  45

با توجه به خروجی کد بالا می‌توانیم ترتیب فراخوانی و اجرای سازنده‌های init  را تشخیص بدهیم. شیء t  سازنده کلاس Teacher  را فراخوانی می‌کند. با این کار، ابتدا سازنده کلاس Person  برنامه را کنترل می‌کند. بعد از آن که کار متد init  از کلاس Person  به پایان می‌رسد. کنترل جریان برنامه دوباره به دست سازنده کلاس Teacher  می‌افتد. این سازنده هم باید کار خود را به پایان برساند تا در نهایت شیء مورد نظر ساخته شود.

کسب مهارت‌های واقعی با انجام پروژه‌های واقعی

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

در پایین، چند فیلم‌ آموزشی از این مجموعه را معرفی کرده‌ایم.

در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی هدایت شده و از فیلم‌های پروژه‌محور بیشتری دیدن کنید.

مجموعه آموزش پروژه محور برنامه نویسی پایتون (Python)
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش پروژه محور برنامه نویسی پایتون هدایت شوید.

جمع‌بندی

در این مطلب از مجله فرادرس با متد init در پایتون آشنا شده‌‌ایم. init  یکی از متدهای رزرو شده برای تعریف کلاس در پایتون است. از همان اول این متد با هدف انجام کار به عنوان سازنده طراحی شده است. به عبارت ساده‌تر متد init  در پایتون برای مقداردهی اولیه به تمام صفات اشیاء به کار برده می‌شود. هر وقت پایتون اقدام به ساخت نمونه‌ای از کلاس‌ها می‌کند متد init  به صورت خودکار فراخوانی می‌شود. به ازای هر نمونه‌ ساخته شده از روی کلاس‌ متد init  هم یک‌بار فراخوانی می‌شود.

متد init  پیش‌فرض، متد init  با پارامتر و متد init  با پارامتر‌های دارای مقدار پیش‌فرض، سه روش مختلف تعریف متد init  هستند. برنامه نویسان می‌توانند از هر سه نوع در زمان تعریف کلاس استفاده کنند. نوشتن کلمه کلیدی self  به عنوان پارامتر برای تمام توابع عضو کلاس الزامی است. بنابراین متد init  هم باید این پارامتر را دریافت کند. این پارامتر به هر کدام از اشیاء ساخته شده از کلاس به صورت منحصر به فرد اشاره می‌کند.

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
Great Learningstratascratch
PDF
مطالب مرتبط
نظر شما چیست؟

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