Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2015 19:29:49

xneo
Зарегистрирован: 2015-09-20
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Итерация приватного словаря

Здравствуйте.
Есть следующий класс:

class MyClass:
    def __init__(self):
        self.__items = {}

Могу ли я сделать его итерируемым, без прямого доступа к свойству items?

obj = MyClass()
for item in obj:
    ...

Офлайн

#2 Сен. 20, 2015 19:51:08

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Итерация приватного словаря

class MyClass(object):
    def __init__(self,  items):
        self.__items = items
    def __iter__(self):
        for i in self.__items:
            yield i

Офлайн

#3 Сен. 21, 2015 01:40:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Итерация приватного словаря

>>> class MyClass:
...     def __init__(self):
...         self.__items = {1: 2, 3: 4}
...     def __iter__(self):
...         return iter(self.__items)
... 
>>> for i in MyClass():
...     print(i)
... 
1
3
>>>



Офлайн

#4 Сен. 21, 2015 12:04:00

xneo
Зарегистрирован: 2015-09-20
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Итерация приватного словаря

Всё заработало, спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version