Tôi đang sử dụng lợi nhuận để trả lại giá trị tiếp theo trong hàm tiếp theo trong lớp của tôi. Nhưng nó không trả về giá trị tiếp theo, nó trả về đối tượng máy phát. Tôi đang cố gắng hiểu rõ hơn về vòng lặp và năng suất. Tôi có thể làm điều đó một cách sai lầm. Xin hãy xem.khi tôi thực hiện năng suất từ bên trong __next__. tại sao nó trở lại đối tượng máy phát điện?
class MyString:
def __init__(self,s):
self.s=s
def __iter__(self):
return self
def __next__(self):
for i in range(len(self.s)):
yield(self.s[i])
r=MyString("abc")
i=iter(r)
print(next(i))
này trả về: đối tượng __next__
máy phát điện tại 0x032C05A0
['__next__' trả về mục tiếp theo trong trình vòng lặp] (https://docs.python.org/3/library/stdtypes.html#iterator.__next__) để làm cho' __next__' một trình tạo không thực sự có ý nghĩa, hoặc nó có nghĩa là mọi giá trị của bộ lặp 'MyString' của bạn là một trình tạo. –
MyString không được xác định '__next__'. '__next__' dành cho các trình vòng lặp, không lặp lại được. Tương tự, nó không nên 'trả về self' cho' __iter__'. – user2357112