English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دروس أساسية بايثون

تحكم عملية بايثون

الوظائف في Python

أنواع البيانات في Python

عمليات ملفات بايثون

كائنات وصفات بايثون

تواريخ ووقت بايثون

معرفة متقدمة في بايثون

كتيب بايثون

التصريف في Python

في هذا الدرس، سنتعلم عن التنوع، التنوع المختلفة وكيفية عرضها بالأمثلة في بايثون.

ما هو التنوع؟

التنوع الكتابي يعني ظهور الحالة بطرق مختلفة.

التنوع هو مفهوم مهم جدًا في البرمجة. يشير إلى استخدام كيان واحد نوعي (دالة، عمودي أو كائن) لتقديم أنواع مختلفة من السيناريوهات.

دعونا نأخذ مثالاً:

مثال 1: تنوع عمودي الجمع

نحن نعلم أن عمودي + تم استخدامه بشكل واسع في برامج بايثون. ولكن، ليس له استخدام واحد فقط.

بالنسبة لأنواع البيانات العددية، يتم استخدام عمودي + لتنفيذ عملية الجمع الرياضية.

num1 = 1
num2 = 2
print(num1+num2)

لذلك، يُنتج البرنامج التالي 3

بالمثل، بالنسبة لأنواع البيانات النصية، يتم استخدامه + عمودي للتواصل.

str1 = "Python"
str2 = "Programming"
print(str1+" "+str2)

نتيجةً لذلك، يُنتج البرنامج التالي : برمجة بايثون

في هذا المكان، يمكننا رؤية أن هناك عمليات مختلفة تجري باستخدام عمودي + على أنواع البيانات المختلفة. هذا هو أحد أكثر ظواهر التنوع البسيطة في بايثون.

تنوع الدوال في بايثون

في بايثون، هناك بعض الدوال التي يمكنها التكامل مع أنواع بيانات متعددة.

أحد هذه الدوال هو دالة len(). يمكن تشغيلها مع العديد من أنواع البيانات في بايثون. دعونا نرى بعض أمثلة الاستخدام لهذه الدالة.

مثال 2: تنوع دالة len()

print(len("w3codebox"))
print(len(["Python", "Java", "C"]))
print(len({"Name": "John", "Address": "Nepal"}))

print(b.area())

5
3
2

في هذا المكان، يمكننا رؤية أن العديد من أنواع البيانات (مثل الأحرف، القوائم، التُمثيلات، المجموعات والقواميس) يمكن استخدامها مع دالة len(). ولكن، يمكننا رؤية أن هذا يعود بمعلومات محددة لكل نوع بيانات معين.

تصنيف المتعدد في دالة len() في Python

التصنيف المتعدد في Python

التصنيف المتعدد هو مفهوم مهم جدًا في برمجة الأنظمة الموجهة للتصنيف.

للحصول على معلومات إضافية حول برمجة الأنظمة الموجهة للتصنيف في Python، يرجى زيارة:برمجة الأنظمة الموجهة للتصنيف في Python

يمكننا استخدام مفهوم التصنيف المتعدد عند إنشاء الطرق الفئوية، لأن Python يسمح للفئات المختلفة بامتلاك طرق بنفس الاسم.

ثم يمكننا بعد ذلك تعميم استدعاء هذه الطرق عبر تجاهل العنصر المستخدم حاليًا. لنلقي نظرة على مثال:

مثال3: التصنيف المتعدد في الطرق الفئوية

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 الطرق والخصائص من الفئة الأم. يمكننا إعادة تعريف بعض الطرق والخصائص للفئة الفرعية، مما يسمىإعادة كتابة الطريقةإعادة كتابة الطريقة).

التصنيف المتعدد يسمح لنا بالوصول إلى هذه الطرق والخصائص المكتسبة من الفئة الأم بنفس الاسم.

لنلقي نظرة على مثال:

مثال4: إعادة كتابة الطريقة

من م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) قد تم تعديلها. ويستخدم تلك المحددة في الفئة الفرعية.

من جهة أخرى، نظرًا لأن طريقة fact() الخاصة بالكائن b لم يتم تعديلها، يمكن استخدامها من قبل فئة Parent Shape.

بايثون والتصريف المتعدد في الأباء والأبناءالاحتياط:تحميل الطريقة