TheBrain نشر 2 يناير 2016 أرسل تقرير نشر 2 يناير 2016 لدي مولد يولد تسلسل معين كما في المثال التالي: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؟ اقتباس
0 هشام رزق الله نشر 3 يناير 2016 أرسل تقرير نشر 3 يناير 2016 حدثت في الإصدار 3 من بايثون العديد من التغييرات والتي جعلت من بايثون أكثر منطقية من الناحية البرمجية، ومن بين هذه التغييرات تم تغيير اسم تابع g.next() إلى g.__next__() كي يتطابق مع بقية التوابع الخاصة مثل __init__() و __del__ والتي تمتلك جميعها خطوط سفلية وكانت next() هي الاستثناء الوحيد لهذه القاعدة وتم إصلاح ذلك في الإصدار 3 من بايثون.وكنصيحة، استخدم في الإصدار 3 من بايثون next(g) بدلا من g.__next__() اقتباس
السؤال
TheBrain
لدي مولد يولد تسلسل معين كما في المثال التالي:
في بايثون 2.6 أستطيع القيام بهذه الاستدعاءات:
لكن في الإصدار 3 من بايثون أحصل على الخطأ التالي إذا حاولت تشغيل السطر السابق:
فما بديل هذا الأمر في بايثون 3؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.