تعدد الأشكال في Python مع الأمثلة

ما هو تعدد الأشكال؟

يمكن تعريف تعدد الأشكال على أنه حالة تحدث بأشكال عديدة ومختلفة. وهو مفهوم في Python البرمجة حيث كائن محدد في Python يمكن استخدامها بطرق مختلفة. يسمح للمبرمج بتعريف أساليب متعددة في فئة مشتقة، ولها نفس الاسم الموجود في الفئة الأصل. تدعم مثل هذه السيناريوهات طريقة التحميل الزائد Python.

تعدد الأشكال في Operaالاختصاصات

عامل في Python يساعد في أداء المهام الحسابية والعديد من المهام البرمجية الأخرى. على سبيل المثال، يساعد عامل "+" في إجراء عملية الجمع بين نوعين صحيحين في Pythonوبنفس الطريقة، يساعد نفس المشغل في ربط السلاسل في Python برمجة.

لنأخذ مثالاً على + (زائد) المشغل في Python لعرض تطبيق تعدد الأشكال في Python كما هو مبين أدناه:

Python رمز:

p = 55
q = 77
r = 9.5
g1 = "Guru"
g2 = "99!"
print("the sum of two numbers",p + q)
print("the data type of result is",type(p + q))
print("The sum of two numbers",q + r)
print("the data type of result is", type (q + r))
print("The concatenated string is", g1 + g2)
print("The data type of two strings",type(g1 + g2))

الإخراج:

the sum of two numbers 132
the data type of result is <class 'int'>

The sum of the two numbers 86.5
the data type of result is <class 'float'>

The concatenated string is Guru99!
The data type of two strings <class 'str'>

يمكن أيضًا اعتبار المثال أعلاه بمثابة مثال على التحميل الزائد للمشغل.

تعدد الأشكال في الأساليب المحددة من قبل المستخدم

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

تعدد الأشكال في Python يتم تحقيق لغة البرمجة من خلال طريقة التحميل الزائد والتجاوز. Python يحدد الأساليب باستخدام الكلمة الأساسية def وبنفس الاسم في كل من الفئة الفرعية والأصلية.

دعونا نأخذ المثال التالي كما هو موضح أدناه: -

Python رمز:

from math
import pi
class square:
    def __init__(self, length):
    self.l = length
def perimeter(self):
    return 4 * (self.l)
def area(self):
    return self.l * self.l
class Circle:
    def __init__(self, radius):
    self.r = radius
def perimeter(self):
    return 2 * pi * self.r
def area(self):
    return pi * self.r * * 2
# Initialize the classes
sqr = square(10)
c1 = Circle(4)
print("Perimeter computed for square: ", sqr.perimeter())
print("Area computed for square: ", sqr.area())
print("Perimeter computed for Circle: ", c1.perimeter())
print("Area computed for Circle: ", c1.area())

الإخراج:

Perimeter computed for square:  40
Area computed for square:  100
Perimeter computed for Circle:  25.132741228718345
Area computed for Circle:  50.26548245743669

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

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

تعدد الأشكال في الوظائف

الوظائف المضمنة في Python تم تصميمها وجعلها متوافقة لتنفيذ العديد من أنواع البيانات. في Python, Len() هي إحدى الوظائف الرئيسية المضمنة.

وهو يعمل على عدة أنواع من البيانات: القائمة، الصف، السلسلة، والقاموس. تقوم الدالة Len () بإرجاع معلومات محددة تتماشى مع أنواع البيانات العديدة هذه.

يوضح الشكل التالي كيفية تطبيق تعدد الأشكال في Python فيما يتعلق بالوظائف المضمنة: –

تعدد الأشكال في الوظائف

يساعد البرنامج التالي في توضيح تطبيق تعدد الأشكال في Python: -

Python رمز:

print ("The length of string Guru99 is ",len("Guru99"))
print("The length of list is ",len(["Guru99","Example","Reader"]))
print("The length of dictionary is ",len({"Website name":"Guru99","Type":"Education"}))

الإخراج:

The length of string Guru99 is 6
The length of the list is 3
The length of the dictionary is 2

تعدد الأشكال في الوظائف

في المثال أعلاه، وظيفة Len () لـ Python ينفذ تعدد الأشكال لأنواع بيانات السلسلة والقائمة والقاموس، على التوالي.

تعدد الأشكال والميراث

الميراث في Python يمكن تعريفه على أنه مفهوم البرمجة حيث يتم تعريف فئة فرعية وراثة الخصائص من فئة أساسية أخرى موجودة فيها Python.

هناك نوعان من المفاتيح Python مفاهيم تسمى تجاوز الطريقة والتحميل الزائد للطريقة.

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

دعونا نأخذ المثال التالي للتعدد الأشكال والوراثة كما هو موضح أدناه: -

Python رمز:

class baseclass:
    def __init__(self, name):
    self.name = name
def area1(self):
    pass
def __str__(self):
    return self.name
class rectangle(baseclass):
    def __init__(self, length, breadth):
    super().__init__("rectangle")
self.length = length
self.breadth = breadth
def area1(self):
    return self.length * self.breadth
class triangle(baseclass):
    def __init__(self, height, base):
    super().__init__("triangle")
self.height = height
self.base = base
def area1(self):
    return (self.base * self.height) / 2
a = rectangle(90, 80)
b = triangle(77, 64)
print("The shape is: ", b)
print("The area of shape is", b.area1())
print("The shape is:", a)
print("The area of shape is", a.area1())

الإخراج:

The shape is: a triangle
The area of a shape is 2464.0

The shape is: a rectangle
The area of a shape is 7200

في الكود أعلاه، الطرق لها نفس الاسم المحدد كطريقة init وطريقة Area1. يتم بعد ذلك استخدام كائنات الفئة المربعة والمستطيلة لاستدعاء الطريقتين لأداء مهام مختلفة وتوفير مخرجات مساحة المربع والمستطيل.

تعدد الأشكال مع الأساليب الطبقية

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

In Python، يمكن تعريف فئتين مختلفتين. يمكن أن تكون إحداهما فئة فرعية، وتستمد السمات من فئة محددة أخرى تسمى الفئة الأصل.

يوضح المثال التالي مفهوم تعدد الأشكال باستخدام طرق الفئة: -

Python رمز:

class amazon:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print("This is product and am class is invoked. The name is {self.name}. This costs {self.price} rupees.")
class flipkart:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print(f "This is product and fli class is invoked. The name is {self.name}. This costs {self.price} rupees.")
FLP = flipkart("Iphone", 2.5)
AMZ = amazon("Iphone", 4)
for product1 in (FLP, AMZ):
    product1.info()

الإخراج:

This is a product, and fli class is invoked. The name is iPhone, and this costs 2.5 rupees.
This is a product, and am class is invoked. The name is iPhone, and this costs 4 rupees.

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

الفرق بين التحميل الزائد للطريقة وتعدد الأشكال في وقت الترجمة

في تعدد الأشكال في وقت الترجمة، يقوم مترجم Python يقوم البرنامج بحل المكالمة. يتم تحقيق تعدد الأشكال في وقت الترجمة من خلال التحميل الزائد للطريقة.

استخدم Python لا يقوم المترجم بحل الاستدعاءات أثناء وقت التشغيل لتعدد الأشكال. يتم تصنيفها أيضًا على أنها طريقة متجاوزة حيث تحمل نفس الطرق توقيعات أو خصائص مماثلة، ولكنها تشكل جزءًا من فئات مختلفة.

ملخص

  • يمكن تعريف تعدد الأشكال على أنه حالة تحدث بأشكال عديدة ومختلفة.
  • عامل في Python يساعد في أداء المهام الرياضية والعديد من المهام البرمجية الأخرى.
  • طريقة محددة من قبل المستخدم في Python لغة البرمجة هي طرق يقوم المستخدم بإنشائها، ويتم الإعلان عنها باستخدام الكلمة الأساسية def مع اسم الوظيفة.
  • تعدد الأشكال في Python يقدم العديد من الصفات المرغوبة، مثل أنه يعزز إمكانية إعادة استخدام الأكواد المكتوبة لفئات وطرق مختلفة.
  • الفئة الفرعية هي فئة مشتقة، وتحصل على سماتها من الفئة الأصل.
  • يتم تحقيق تعدد الأشكال أيضًا من خلال تجاوز طريقة وقت التشغيل والتحميل الزائد لطريقة وقت الترجمة.
  • تعدد الأشكال في Python يتم تحقيق ذلك أيضًا من خلال التحميل الزائد للمشغل وطرق الفئة.

تلخيص هذه التدوينة بـ: