Форум сайта python.su
0
Есть класс, содержащий методы iter и next и текстовый файл my_text.txt Нужно внутри этого класса открыть текстовый файл и прочитать его построчно. Не могу понять как это сделать.
file_name = 'my_text.txt' class ReadFile: def __init__(self, file_name): pass def __iter__(self): pass def __next__(self): pass
Офлайн
857
class It: def __init__(self, file_name): self.file_name = file_name self.fin = None def __iter__(self): self.fin = open(self.file_name, encoding='utf-8') return self.fin def __next__(self): try: line = next(self.fin) except StopIteration: self.fin.close() self.fin = None raise return line it = It('/etc/passwd') for i in it: print(i) for i in it: print(i)
Отредактировано py.user.next (Апрель 7, 2022 09:47:47)
Офлайн
0
Спасибо. А еще такой вопрос: можно обращаться к итератору внутри самого класса?
Офлайн
857
vladimir_vl_vladДа возможно-то много чего, только не всё надо делать. Возможно подняться на девятиэтажку и потом спрыгнуть с неё. Возможно натянуть резиновый сапог на голову, а потом пытаться снять его плоскогубцами. Да много чего возможно, но стал бы ты это делать? Вот то же самое и в питоне. Тут главный вопрос: зачем?
можно обращаться к итератору внутри самого класса?
Отредактировано py.user.next (Апрель 8, 2022 07:44:34)
Офлайн
0
py.user.nextНу, допустим в классе будет еще один метод который производит вычисления над значениям, получаемыми из итератора
Офлайн
857
vladimir_vl_vladС какого перепугу он будет в самом итераторе? Сделай его отдельно и применяй к каждому значению, получаемому из итератора.
в классе будет еще один метод который производит вычисления над значениям, получаемыми из итератора
Офлайн