اذهب إلى المحتوى
  • 0

ما هو بديل generator.next() في بايثون 3؟

TheBrain

السؤال

لدي مولد يولد تسلسل معين كما في المثال التالي:

def triangleNums():
    '''generate series of triangle numbers'''
    tn = 0
    counter = 1
    while(True):
        tn = tn + counter
        yield tn
        counter = counter + 1

في بايثون 2.6 أستطيع القيام بهذه الاستدعاءات:

g = triangleNums() # get the generator
g.next()           # get next val

لكن في الإصدار 3 من بايثون أحصل على الخطأ التالي إذا حاولت تشغيل السطر السابق:

AttributeError: 'generator' object has no attribute 'next'

فما بديل هذا الأمر في بايثون 3؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

حدثت في الإصدار 3 من بايثون العديد من التغييرات والتي جعلت من بايثون أكثر منطقية من الناحية البرمجية، ومن بين هذه التغييرات تم تغيير اسم تابع g.next() إلى g.__next__() كي يتطابق مع بقية التوابع الخاصة مثل __init__() و __del__ والتي تمتلك جميعها خطوط سفلية وكانت next() هي الاستثناء الوحيد لهذه القاعدة وتم إصلاح ذلك في الإصدار 3 من بايثون.

وكنصيحة، استخدم في الإصدار 3 من بايثون next(g) بدلا من g.__next__()

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...