الانتقال إلى المحتوى الرئيسي

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

إعادة تعريف الأساليب هي واحدة من السمات الرئيسية للبرمجة وجوه المنحى (أوب). في لغة برمجة بايثون ، تسمح لك الطرق المهيمنة بتغيير سلوك طريقة محددة في فئة الأصل في فئة فرعية.

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

في هذا المثال ، يتجاوز الطفل الفئة الفرعية الأسلوب تحية () المعرفة في الأصل فئة الأصل. ومع ذلك ، باستخدام الكلمة الرئيسية "سوبر" ، نحتفظ بوظيفة الطريقة الأصلية ونضيف إليها إجراءات جديدة.

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

  1. الأساليب وإعادة تعريفها في بايثون
  2. ما هي طريقة إعادة تعريف في بيثون?
  3. متى يجب إعادة تعريف الأساليب?
  4. نصائح لإعادة تعريف الأساليب
  5. أمثلة على إعادة تعريف الأساليب في بايثون
  6. سؤال وجواب
  7. كيف يمكنني إعادة تعريف طريقة في بيثون?
  8. ما هي بعض الأمثلة على الأساليب المهيمنة في بايثون?
  9. كيف يمكنني التحقق من أن الطريقة قد تم تجاوزها?
  10. هل من الممكن إعادة تعريف طريقة داخل طريقة?
  11. هل من الممكن تجاوز طريقة دون إنشاء فئة الطفل?

الأساليب وإعادة تعريفها في بايثون

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

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

يمكن تجاوز هذه الطريقة لنشر " اللحمة!".

وتمرير الحجج اللازمة لذلك.

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

يوجد أدناه مثال على الكود يوضح إعادة تعريف الطريقة:

فئة الحيوان:

ديف جعل الصوت (النفس):

طباعة ("صوت مجردة")

كلب فئة (حيوان):

ديف جعل الصوت (النفس):

طباعة ("اللحمة!")

القط = الحيوان()

القط.جعل الصوت () # الإخراج: الصوت المجرد

الكلب = الكلب()

كلب.جعل الصوت () # الإخراج: اللحمة!

خط " اللحمة!"بدلا من الصوت المجرد.

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

ما هي طريقة إعادة تعريف في بيثون?

إعادة تعريف الطريقة في بايثون هي عملية تغيير أو استبدال تنفيذ طريقة في فئة سليل بطريقة تختلف وظيفتها عن تنفيذ الفئة الأساسية.

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

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

لإعادة تعريف طريقة في بايثون ، اتبع الخطوات التالية:

  1. قم بإنشاء فئة لاحقة تحتوي على تطبيق جديد للطريقة.
  2. تحديد طريقة بنفس الاسم في فئة سليل.
  3. استخدم الكلمة الرئيسية الفائقة () لاستدعاء التنفيذ الأصلي لطريقة الفئة الأساسية.
  4. داخل الطريقة المعاد تعريفها ، يمكنك إضافة وظائف جديدة أو تغيير المنطق الحالي.

تعد إعادة تعريف الأساليب أداة مهمة في البرمجة الشيئية ، لأنها تتيح لك تكييف سلوك الفصل

متى يجب إعادة تعريف الأساليب?

طريقة إعادة تعريف في بيثون هي واحدة من السمات القوية للبرمجة وجوه المنحى. تسمح لك عملية إعادة تعريف الطريقة بتغيير سلوك طريقة محددة في فئة رئيسية في فئة فرعية.

طرق تجاوز مفيدة بشكل خاص في الحالات التالية:

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

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

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

نصائح لإعادة تعريف الأساليب

تعد إعادة تعريف الأساليب أحد المبادئ الأساسية للبرمجة الشيئية. يسمح لك بإنشاء فئات يمكنها تعديل أو استكمال سلوك الأساليب الموروثة من الفئة الأصلية.

فيما يلي بعض النصائح لتجاوز الطرق في بايثون:

  1. مراجعة الوثائق: قبل البدء في إعادة تعريف طريقة ما ، تأكد من أنك تفهم تماما تنفيذها الأصلي وكيف تتفاعل مع الطرق الأخرى للفئة.
  2. اتبع اصطلاحات التسمية: عند إعادة تعريف طريقة ما ، اتبع اصطلاحات التسمية بحيث تكون الشفرة واضحة وسهلة القراءة. استخدام أساليب مثل _ _ الحرف الأول__ ، _ _ شارع _ _ ، _ _ ريبر _ _ مع الرعاية حتى لا تنتهك الاتفاقيات القياسية.
  3. اتصل بالطريقة الأصلية إذا لزم الأمر: إذا كان من المهم الحفاظ على سلوك الوالدين بطريقة تم تجاوزها ، فيمكنك تسميتها باستخدام الوظيفة الفائقة (). سيسمح لك ذلك بتوسيع الوظيفة دون الحاجة إلى استبدال الطريقة الأصلية تماما.
  4. كن حذرا مع تغيير الحجج: إذا قمت بتغيير وسيطات طريقة ما عند التجاوز ، فتأكد من أن الوسيطات الجديدة متوافقة مع الاستدعاءات الحالية لهذه الطريقة. خلاف ذلك ، يمكن أن يؤدي إلى أخطاء وسلوك غير مرغوب فيه.
  5. اختبار التعليمات البرمجية الخاصة بك: عند إعادة تعريف الأساليب ، خاصة في المشاريع الكبيرة ، من المهم اختبار التعليمات البرمجية الخاصة بك للتأكد من أنها تعمل بشكل صحيح. ستساعد الاختبارات في تحديد الأخطاء وضمان التشغيل الموثوق لفصلك.

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

أمثلة على إعادة تعريف الأساليب في بايثون

في بيثون ، يمكنك تجاوز أساليب الطبقة لتغيير سلوكهم أو إضافة وظائف جديدة. فيما يلي بعض الأمثلة:

1. إعادة تعريف طريقة _ _ الحرف الأول__

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

شخص الطبقة:

ديف _ _ الحرف الأول _ _ (الذات ، الاسم ، العمر):

self.name = الاسم

النفس.العمر = العمر

# إعادة تعريف _ _ الحرف الأول__

مواطنه _ _ الحرف الأول _ _ (الذات, اسم, عمر, عنوان) طريقة:

self.name = الاسم

النفس.العمر = العمر

النفس.العنوان = العنوان

شخص = شخص ('جون' ، 25 ، '123 الشارع الرئيسي')

2. إعادة تعريف طريقة _ _ شارع__

Метод __str__ возвращает строковое представление объекта. Мы можем переопределить его, чтобы получить нужный нам формат вывода информации.

class Person:

def __init__(self, name, age, address):

self.name = name

self.age = age

self.address = address

# Переопределение метода __str__

def __str__(self):

return f"Name: {self.name}, Age: {self.age}, Address: {self.address}"

person = Person('John', 25, '123 Main St')

print(person)

3. Переопределение метода __eq__

Метод __eq__ используется для сравнения объектов. Мы можем переопределить его, чтобы определить свою логику сравнения.

class Point:

def __init__(self, x, y):

self.x = x

self.y = y

# Переопределение метода __eq__

def __eq__(self, other):

return self.x == other.x and self.y == other.y

point1 = Point(1, 2)

point2 = Point(1, 2)

point3 = Point(3, 4)

print(point1 == point2) # True

print(point1 == point3) # False

4. إعادة تعريف طرق العمل مع المشغلين

يمكننا أيضا إعادة تعريف الأساليب بحيث تدعم الفئات العمل مع عوامل تشغيل مختلفة ، على سبيل المثال ، الجمع ( + ) ، الطرح ( - ) ، الضرب ( * ) ، القسمة ( / ) ، إلخ.

ناقلات الطبقة:

مواطنه _ _ الحرف الأول__(النفس ، س ، ص):

النفس.س = س

النفس.ص = ص

# إعادة تعريف _ _ إضافة _ _ (إضافة) طريقة

مواطنه _ _ إضافة _ _ (النفس, آخر):

عودة ناقلات (النفس.س + آخر.س ، النفس.y + other.y)

# Переопределение метода __mul__ (умножение)

def __mul__(self, scalar):

return Vector(self.x * scalar, self.y * scalar)

vector1 = Vector(1, 2)

vector2 = Vector(3, 4)

result1 = vector1 + vector2

result2 = vector1 * 2

print(result1.x, result1.y) # 4, 6

print(result2.x, result2.y) # 2, 4

Это лишь некоторые примеры переопределения методов в Python. تتيح لنا إعادة تعريف الأساليب التحكم بمرونة في سلوك الفصول وإضافة الوظائف اللازمة لبرامجنا.

سؤال وجواب

كيف يمكنني إعادة تعريف طريقة في بيثون?

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

ما هي بعض الأمثلة على إعادة تعريف الأساليب في بايثون?

أمثلة على أساليب إعادة تعريف في بيثون يمكن إعادة تعريف __الحرف الأول__() طريقة لتهيئة فئة مع سمات إضافية ، وإعادة تعريف __شارع__() طريقة لتغيير تمثيل سلسلة من الطبقة ، وإعادة تعريف __إضافة__() طريقة لتغيير سلوك عملية الإضافة ، وما إلى ذلك.

كيف يمكنني التحقق من أن الطريقة قد تم تجاوزها?

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

هل من الممكن إعادة تعريف طريقة داخل طريقة?

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

هل من الممكن تجاوز طريقة دون إنشاء فئة الطفل?

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