سلام عليكم شباب
شباب انا بحاول اتعلم oop في بايتون
حيت واجهتني مشكلة وهي انني
لم افهم وضيفة __init__
في كلاس
هل يستطيع احد ان يشرحها لي بليز
تسمى هذه الدالة المتفردة special method، وتسمى أيضًا الدالة المُهيئة initializer، وفي اللغات الأخرى تسمى constructor، إلا إن هناك اختلافات طفيفة بينهما.
وظيفتها بسيطة جدًا، في هذه الدالة تحدد ما هي المدخلات التي تريد للفئة class أن تأخذها. ولك أن تضع فيها القيم الثابتة إن أردت. سأعطيك مثالًا، ليتضح المقصود. سنبني حاسبة بسيطة تأخذ عدديين فقط، وتوفر لك عمليتين حسابيتين إما الجمع وإما الطرح. بسم الله:
class Calc:
def __init__(self, x, y): #حددنا هنا المدخلات التي تأخذها هذه الفئة وهي العددان x و y
self.x = x
self.y = y
def add(self): # هذه الدالة للقيام بعملية الجمع
return x + y
def sub(self): وهذه للطرح
return x - y
ijma3 = calc(3, 2).add() #سنحصل على القيمة 5
e6ra7 = calc(3, 2).sub() #سنحصل على القيمة 1
فكما ترى فوظيفة __init__ هي تحديد نوع المدخلات (والتي هي هنا x و y)، وحفظها في الفئة(class) حتى نستخدمهن في الدوال الأخرى.
اسألني إن أشكل عليك شيء ما، فأنا هنا.
أخي انا لم اجرب هادا الكود ولاكن يمكن قيام بنفس الشيء بستخدام هادا الكود
صدقت، كل ما فعلتَ هو أن غيرتَ اسم __init__ إلى numbers ولكن المفهوم هو نفسه. إن سألتني لماذا هذا الاسم __init__ ، فسأقول لك: هذا ما تواضع عليه المبرمجون.
ميزة __init__ أنك تستطيع تمرير ما تريد باستدعاء اسم الكلاس فقط، حيث أن بايثون ستعلم أنك تقصد __init__.
Calc(3,4)
أما بطريقتك فستضطر إلى أن تكتب:
Calc().numbers(3,4)
التعليقات