Найти - Пользователи
Полная версия: Создать итератор для класса
Начало » Python для новичков » Создать итератор для класса
1
ayelet
Возникла такая проблема. Дано задание: создать динамическую структуру очередь
Мне нужно осуществить просмотр очереди в главном модуле с помощью методов класса (итераторов): получение указателя на первый элемент,получение указателя на следующий элемент, получение значения поля данных по значению указателя на запись.
и не получается сделать методы на получение указателей
 class Deqeue:
 
    head = None
 
    class Node:
 
        element = None
        next_node = None
 
        def __init__(self, element, next_node=None):
            self.element = element
            self.next_node = next_node
 
    def __iter__(self):
        return self
 
    def __next__(self):
py.user.next
ayelet
Дано задание: создать динамическую структуру очередь
Динамическая структура очередь - это queue. А deque - это динамическая структура дек. Очередь и дек - это разные вещи.

Не надо определять класс в классе. Это глупость несусветная. Если тебя так учат, лучше курс/книгу сменить. Пиши Node снаружи.

Определись сначала, как именно ты будешь реализовывать очередь. Реализовать один и тот же интерфейс очереди можно абсолютно по-разному.

ayelet
получение указателя на первый элемент
Работай с очередью снаружи. Напиши, как ты снаружи используешь очередь, чтобы получить указатель на первый элемент.

ayelet
получение указателя на следующий элемент
Работай с очередью снаружи. Напиши, как ты снаружи используешь очередь, чтобы получить указатель на следующий элемент.

ayelet
получение значения поля данных по значению указателя на запись
Работай с очередью снаружи. Напиши, как ты снаружи используешь очередь, чтобы получить значение поля данных по значению указателя на элемент очереди.

Надо также рассмотреть вопрос, когда элемент удалён из очереди, а из очереди можно удалять элементы, но при этом у тебя остаётся сохранённый указатель на этот удалённый элемент и ты пытаешься получить значение поля данных из этого элемента. Только для элемента, находящегося в очереди, ты можешь прогарантировать доступ к значению поля данных в этом элементе.

Все эти вопросы нужно выяснить до написания реализации очереди, а не во время или после.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB