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

كيفية جعل كائن فئة قابل للتكرار في بيثون: دليل بسيط

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

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

ملاحظة: تبدأ الطرق وتنتهي بشرطتين سفليتين (_). الأساليب السحرية في بايثون لها معنى خاص ويجب تنفيذها بمنطق معين.

هناك طريقتان سحريتان رئيسيتان يجب تنفيذهما لإنشاء كائن قابل للتكرار: _ _ إيتر _ _ و__التالي__.

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

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

ما هي الكائنات القابلة للتكرار في بايثون?

وغيرها الكثير.

، والتي ترجع العنصر التالي من الكائن في كل تكرار.

داخل الصف.

مثال على استخدام كائن متكرر في حلقة يبدو كما يلي:

قائمتي = [1, 2, 3, 4, 5]

للعنصر في قائمتي:

طباعة (البند)

إنه كائن قابل للتكرار من نوع "القائمة". داخل الحلقة ، يتم تكرار عناصر القائمة من خلال ، ويتم عرض كل عنصر على الشاشة.

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

الخطوة 1: إنشاء فئة

من أجل جعل كائن من فئة قابلة للتكرار ، يجب عليك أولا إنشاء فئة.

الفئة هي تعريف لكائن يحتوي على خصائص (متغيرات) وطرق (وظائف) تسمح لك بالعمل مع هذا الكائن.

متبوعا باسم الفصل.

هنا مثال على إنشاء فئة بسيطة:

فئة ميكلاس:

تمريرة

يشير إلى المترجم أنه لا ينبغي تنفيذ أي شيء داخل الفصل.

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

إنشاء فئة لكائن قابل للتكرار

في الصف.

.

, если больше нет элементов для перебора.

Вот пример простого класса для итерируемого объекта:

class MyIterator:

def __init__(self, items):

self.items = items

self.index = 0

def __iter__(self):

return self

def __next__(self):

if self.index >= len(self.items):

raise StopIteration

item = self.items[self.index]

self.index += 1

return item

الخطوة 1.

لاستخدام هذه الفئة ، يمكنك إنشاء كائن وتمرير قائمة العناصر إلى المنشئ:

قائمتي = [1, 2, 3, 4, 5]

ميتيراتور = ميتيراتور(قائمتي)

:

للبند في بلدي:

طباعة (البند)

# أو

طباعة (التالي (لي_المؤلف))

طباعة (التالي (لي_المؤلف))

طباعة (التالي (لي_المؤلف))

طباعة (التالي (لي_المؤلف))

طباعة (التالي (لي_المؤلف))

.

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

الخطوة 2: طريقة _ _ إيتر__

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

. يجب أن تعيد هذه الطريقة مكررا سيتم استخدامه للتكرار من خلال عناصر الفصل.

يجب أن يتم تعريفه في فئة وأن يكون له الهيكل التالي:

فئة ميكلاس:

مواطنه _ _ إيتر _ _ (النفس):

# عودة مكرر

يتم إرجاعها في كل تكرار ويتم استدعاؤها في التكرار التالي.

и итератора в классе:

class MyClass:

def __init__(self, data):

self.data = data

def __iter__(self):

# возвращаем итератор

return self.MyIterator(self.data)

class MyIterator:

def __init__(self, data):

self.data = data

self.index = 0

def __iter__(self):

return self

def __next__(self):

if self.index < len(self.data):

result = self.data[self.index]

self.index += 1

return result

else:

raise StopIteration

، الذي يعيد العنصر التالي.

تصبح قابلة للتكرار ويمكن استخدامها في الحلقة:

مي_بج = ميكلاس([1, 2, 3, 4, 5])

للبند في بلدي:

طباعة (البند)

الناتج:

1

2

3

4

5

هو الإخراج على خط منفصل في حلقة.

، والتي ترجع العنصر التالي في كل تكرار.

إضافة طريقة _ _ _ _ _ إلى الفصل

. سيتم استدعاء هذه الطريقة في كل تكرار للكائن.

:

فئة ميتيرابليكلاس:

def __init__(self, data):

self.data = data

self.index = 0

def __iter__(self):

return self

def __next__(self):

if self.index >= len(self.data):

raise StopIteration

current = self.data[self.index]

self.index += 1

return current

и увеличивает индекс.

.

كائني = فئة ميتيرابلي ([1 ، 2 ، 3])

للبند في كائني:

طباعة (البند)

نتيجة لتنفيذ هذا الرمز ، سيتم إخراج الأرقام 1 ، 2 ، 3.

.

الخطوة 3: الطريقة التالية _ _ __

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

داخل الطريقة _ _ التالية _ _ ، يجب علينا:

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

في ما يلي مثال على تنفيذ الطريقة _ _ التالية _ _ :

مواطنه _ _ التالي _ _ (النفس):

إذا النفس.تيار > = لين (الذات.البيانات):

رفع التوقف

آخر:

النفس.الحالي + = 1

عودة النفس.البيانات [الذات.الحالي - 1]

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

يجب تنفيذ الأسلوب__ التالي _ _ جنبا إلى جنب مع الأسلوب__ _ _ _ _ _ في كائن الفئة من أجل الكائن لتصبح قابلة للتكرار.

تنفيذ طريقة _ _ التالي _ _ لكائن قابل للتكرار

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

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

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

فئة ميتيراتور:

مواطنه _ _ إيتر _ _ (النفس):

عودة النفس

مواطنه _ _ التالي _ _ (النفس):

# إرجاع العنصر التالي من الكائن المتكرر

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

فئة ميتيراتور:

مواطنه _ _ الحرف الأول__(النفس, البيانات):

النفس.البيانات = البيانات

النفس.الفهرس = 0

مواطنه _ _ إيتر _ _ (النفس):

عودة النفس

مواطنه _ _ التالي _ _ (النفس):

إذا النفس.فهرس > = لين (الذات.البيانات):

رفع التوقف

العنصر = الذات.البيانات [الذات.فهرس]

النفس.مؤشر + = 1

عنصر الإرجاع

# مثال الاستخدام:

بياناتي = [1, 2, 3, 4, 5]

ميتيراتور = ميتيراتور (بياناتي)

للبند في بلدي:

طباعة (البند)

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

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

الخطوة 4: مثال الاستخدام

.

أولا ، دعونا إنشاء مثيل من الطبقة:

قابل للتقرير = قابل للتقرير ()

لإخراج جميع عناصرها:

للعنصر في حسابي:

طباعة (عنصر)

بحيث يعود مكرر.

لهذا المكرر يدويا:

_ _ _ _ _ _ _ _ _ _ _ 

طباعة (رسالتي.__ التالي _ _ ())

سوف يطلق طالما هناك عناصر في مكرر ، وسوف يعود هذه العناصر.

أو الحصول على مكرر واستخدامه يدويا. مبارك!

مثال على إنشاء واستخدام كائن قابل للتكرار

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

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

فئة مايليست:

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

النفس.البيانات = []

مواطنه إضافة (النفس ، البند):

النفس.البيانات.إلحاق (البند)

مواطنه _ _ إيتر _ _ (النفس):

عودة إيتر (الذات.البيانات)

قائمتي = قائمتي ()

قائمتي.إضافة(1)

قائمتي.إضافة(2)

قائمتي.إضافة (3)

للعنصر في قائمتي:

طباعة (البند)

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

ستكون نتيجة تنفيذ هذا الرمز:

1

2

3

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

سؤال وجواب

كيف يمكنني جعل كائن قابل للتكرار في بيثون?

من أجل جعل كائن قابل للتكرار في بيثون ، فمن الضروري تحديد طريقة `__إيتر__` في الطبقة ، والتي سوف تعود مكرر. المكرر هو كائن يحتوي على طريقة ' _ _ _ _ _ التالية التي ترجع العنصر التالي من التسلسل.

كيف يمكنني تنفيذ تمريرة متسلسلة من خلال عناصر كائن فئة?

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

هل من الممكن إنشاء مكررات متعددة لنفس كائن الفئة القابل للتكرار?

نعم ، يمكنك إنشاء مكررات متعددة لنفس كائن الفئة القابل للتكرار. سيعمل كل مكرر بشكل مستقل عن الآخرين ويتكرر على كائن الفئة من البداية إلى النهاية. للقيام بذلك ، تحتاج إلى تحديد طريقة`__ إيتر _ _ ' ، والتي ستعيد مكررا جديدا في كل مرة يتم استدعاؤها.