سيف الدين حسنات نشر 5 أغسطس 2023 أرسل تقرير نشر 5 أغسطس 2023 (معدل) ما هو التابع السحري و كيف يعمل ومتى احتاج استخدامه؟؟ تم التعديل في 5 أغسطس 2023 بواسطة Mustafa Suleiman تعديل عنوان السؤال 1 اقتباس
0 Kais Hasan نشر 5 أغسطس 2023 أرسل تقرير نشر 5 أغسطس 2023 التابع السحري هو تابع يبدأ و ينتهي ب __ أي رمزين underscore. هو لا يعمل مثل التوابع العادية، بالطبع يمكنك استدعاءه بشكل مباشرة و لكن الفكرة منه أن يعمل بدون ذلك. كيفية عمله و متى تحتاج لاستعماله يختلف باختلاف التابع السحري، مثلاً التابع __init__ هو تابع سحري، و هو يستعمل لتهيئة الغرض من صنف معين، اي أنه مثل الباني، أنت لا تقوم باستدعاءه مباشرة بل يستدعى تلقائياً عند إنشاء الغرض، و بالتالي من الممكن أن تستفيد منه بوضع بعض العمليات التي تريد القيام بها عندما يتم إنشاء غرض من الصنف. هناك الكثير من التوابع السحرية سأذكر أهمها و لاحقاً ستتعرف على غيرها عند الحاجة. __len__ يستعمل لإرجاع طول غرض من هذا الصنف، هذا التابع مفيد في حال كان الصنف يمثل حاوية عناصر، و يتم استدعاء هذا التابع عند تمرير غرض من الصنف إلى الدالة len. __str__ يستعمل لإرجاع تمثيل نصي للغرض، هذا التابع يتم استدعاءه عند طباعة الغرض، أو في أي مكان يجب تحويل الغرض فيه إلى سلسلة نصية. 1 اقتباس
0 Mustafa Suleiman نشر 5 أغسطس 2023 أرسل تقرير نشر 5 أغسطس 2023 ما التابع السحري (Magic Method) هو مصطلح يشير إلى مجموعة من الدوال الخاصة التي تحمل اسمًا خاصًا بدايةً ونهايةً بشرطة سفلية (underscore) من كلا الجانبين. وتعمل تلك الدوال الخاصة في ظروف محددة عند حدوث أنواع معينة من الأحداث في الكلاس، مثل إنشاء الكائنات، الجمع بينها، تحويل الأنواع، وغيرها. والتابع السحري الأكثر شيوعًا هو __init__() الذي يُستخدم لبناء المُثيلات (الكائنات) عند إنشائها من الكلاس، وعند استدعاء الكلاس لإنشاء كائن جديد، سيتم تفعيل هذا التابع للقيام بإعداد الكائن، وإليك مثال: class MyClass: def __init__(self, value): self.value = value print("تم إنشاء كائن!") obj1 = MyClass(10) # سيطبع: تم إنشاء كائن! بالإضافة إلى __init__()، هناك العديد من التوابع السحرية الأخرى مثل __str__() لتمثيل الكائن على شكل سلسلة نصية عند استخدام print()، و __add__() لتحديد سلوك الجمع بين كائنين من نوع الكلاس. وباستطاعتك استخدام التوابع السحرية عندما تريد تغيير سلوك الكائنات في الكلاس ليتماشى مع احتياجاتك. مثلاً إن كان لديك كلاس يمثل متجرًا على الإنترنت وتريد تعريف سلوك الجمع بين عناصر المتجر، فيمكنك استخدام التابع السحري __add__() لأنه سيتم استدعاؤه عند استخدام العملية الحسابية + بين كائنين من هذا الكلاس. اقتباس
0 عبدالباسط ابراهيم نشر 6 أغسطس 2023 أرسل تقرير نشر 6 أغسطس 2023 إليك بعض الأمثلة على استخدام التوابع السحرية: __init__(): هذه الدالة السحرية هي دالة منشئة، وتُستخدم لإنشاء كائن جديد. يتم استدعاؤها تلقائيًا عند إنشاء كائن جديد. على سبيل المثال، الكود التالي ينشئ كائنًا من فئة Person ويعيين المتغيرات name و age على القيم John Doe و 21 على التوالي: class Person: def __init__(self, name, age): self.name = name self.age = age p = Person('John Doe', 21) print(p.name) # John Doe print(p.age) # 21 __str__(): هذه الدالة السحرية هي دالة سلسلية، وتُستخدم لإنشاء سلسلة من كائن. يتم استدعاؤها تلقائيًا عندما يتم تحويل كائن إلى سلسلة. على سبيل المثال، الكود التالي ينشئ كائنًا من فئة Person ويعيد سلسلة تحتوي على اسم وعمر الكائن: class Person: def __str__(self): return f'{self.name} is {self.age} years old' p = Person('John Doe', 21) print(p) # John Doe is 21 years old __lt__() و __gt__(): هذه الدوال السحرية هي دوال مقارنة، وتُستخدم لمقارنة كائنين. يتم استدعاؤها تلقائيًا عندما يتم مقارنة كائنين. على سبيل المثال، الكود التالي يقارن كائنين من فئة Person بناءً على عمرهم: class Person: def __lt__(self, other): return self.age < other.age p1 = Person('John Doe', 21) p2 = Person('Jane Doe', 22) print(p1 < p2) # True هذه مجرد أمثلة قليلة على استخدام التوابع السحرية. يمكن استخدام التوابع السحرية في العديد من السياقات الأخرى. اقتباس
السؤال
سيف الدين حسنات
ما هو التابع السحري و كيف يعمل
ومتى احتاج استخدامه؟؟
تم التعديل في بواسطة Mustafa Suleimanتعديل عنوان السؤال
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.