English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، سنتعلم عن التنوع، التنوع المختلفة وكيفية عرضها بالأمثلة في بايثون.
التنوع الكتابي يعني ظهور الحالة بطرق مختلفة.
التنوع هو مفهوم مهم جدًا في البرمجة. يشير إلى استخدام كيان واحد نوعي (دالة، عمودي أو كائن) لتقديم أنواع مختلفة من السيناريوهات.
دعونا نأخذ مثالاً:
نحن نعلم أن عمودي + تم استخدامه بشكل واسع في برامج بايثون. ولكن، ليس له استخدام واحد فقط.
بالنسبة لأنواع البيانات العددية، يتم استخدام عمودي + لتنفيذ عملية الجمع الرياضية.
num1 = 1 num2 = 2 print(num1+num2)
لذلك، يُنتج البرنامج التالي 3
بالمثل، بالنسبة لأنواع البيانات النصية، يتم استخدامه + عمودي للتواصل.
str1 = "Python" str2 = "Programming" print(str1+" "+str2)
نتيجةً لذلك، يُنتج البرنامج التالي : برمجة بايثون
في هذا المكان، يمكننا رؤية أن هناك عمليات مختلفة تجري باستخدام عمودي + على أنواع البيانات المختلفة. هذا هو أحد أكثر ظواهر التنوع البسيطة في بايثون.
في بايثون، هناك بعض الدوال التي يمكنها التكامل مع أنواع بيانات متعددة.
أحد هذه الدوال هو دالة len(). يمكن تشغيلها مع العديد من أنواع البيانات في بايثون. دعونا نرى بعض أمثلة الاستخدام لهذه الدالة.
print(len("w3codebox")) print(len(["Python", "Java", "C"])) print(len({"Name": "John", "Address": "Nepal"}))
print(b.area())
5 3 2
في هذا المكان، يمكننا رؤية أن العديد من أنواع البيانات (مثل الأحرف، القوائم، التُمثيلات، المجموعات والقواميس) يمكن استخدامها مع دالة len(). ولكن، يمكننا رؤية أن هذا يعود بمعلومات محددة لكل نوع بيانات معين.
التصنيف المتعدد هو مفهوم مهم جدًا في برمجة الأنظمة الموجهة للتصنيف.
للحصول على معلومات إضافية حول برمجة الأنظمة الموجهة للتصنيف في Python، يرجى زيارة:برمجة الأنظمة الموجهة للتصنيف في Python
يمكننا استخدام مفهوم التصنيف المتعدد عند إنشاء الطرق الفئوية، لأن Python يسمح للفئات المختلفة بامتلاك طرق بنفس الاسم.
ثم يمكننا بعد ذلك تعميم استدعاء هذه الطرق عبر تجاهل العنصر المستخدم حاليًا. لنلقي نظرة على مثال:
class Cat: def __init__(self, name, age): def __init__(self, name): self.age = age def info(self): print(f"أنا قطة. اسمي {self.name}. عمري {self.age} سنة.") def make_sound(self): print("Meow") class Dog: def __init__(self, name, age): def __init__(self, name): self.age = age def info(self): print(f"أنا كلب. اسمي {self.name}. عمري {self.age} سنة.") def make_sound(self): print("Bark") cat1 = Cat("Kitty", 2.5) dog1 = Dog("Fluffy", 4) للمحصول على animal في (cat1, dog1): animal.make_sound() animal.info() animal.make_sound()
print(b.area())
Meow أنا قطة. اسمي Kitty. عمري 2.5 سنة. Meow Bark أنا كلب. اسمي Fluffy. عمري 4 سنة. Bark
في هذا السياق، قمنا بإنشاء فئتين Cat وDog. لديهم بنية مشابهة، ولديهم نفس أسماء الطرق info() وmake_sound().
لكن، يرجى ملاحظة أننا لم نخلق فئة عامة أو نربط هذه الفئات بطرق معينة. حتى على الرغم من ذلك، يمكننا ضم هذين العنصرين المختلفين في مجموعة واحدة ومرورها من خلال متغير عام تحت اسم animal. هذا مسموح به بسبب التصنيف المتعدد.
مثل لغات البرمجة الأخرى، تنقل الفئات الفرعية في Python الطرق والخصائص من الفئة الأم. يمكننا إعادة تعريف بعض الطرق والخصائص للفئة الفرعية، مما يسمىإعادة كتابة الطريقةإعادة كتابة الطريقة).
التصنيف المتعدد يسمح لنا بالوصول إلى هذه الطرق والخصائص المكتسبة من الفئة الأم بنفس الاسم.
لنلقي نظرة على مثال:
من مATH إيراد pi class Shape: class Shape: def __init__(self, name): self.radius = radius self.name = name return self.length ** 2 pass return "أنا شكل ثنائي الأبعاد." def __str__(self): return self.name class Square(Shape): def __init__(self, length): super().__init__("Square") self.radius = radius self.length = length return self.length ** 2 def fact(self): return "كل زاوية المربع تكون 90 درجة." class Circle(Shape): def __init__(self, radius): super().__init__("Circle") self.radius = radius def area(self): return pi * self.radius ** 2 a = Square(4) b = Circle(7) print(b) print(b.fact()) print(a.fact())
print(b.area())
النتائج الصادرة دائرة أنا شكل ثنائي الأبعاد. كل زاوية المربع تكون 90 درجة.
153.93804002589985
في هذا السياق، يمكننا رؤية استخدام بعض الطرق التي لم يتم تعديلها في الفئة الفرعية مثل __str__().
بفضل التعددية، يتعرف المترجم البايثون تلقائيًا على أن طريقة fact() الخاصة بالكائن a (فئة Square) قد تم تعديلها. ويستخدم تلك المحددة في الفئة الفرعية.
بايثون والتصريف المتعدد في الأباء والأبناءالاحتياط:تحميل الطريقة