certain-design-patterns/iterator.py

28 lines
890 B
Python
Raw Permalink Normal View History

2025-02-07 12:10:20 +03:00
from typing import List, Iterator
# юзер = его имя + список друзей
class VkUser:
def __init__(self, name: str, friends: List[str]):
self.name = name
self.friends = friends
def get_friends(self) -> List[str]:
return self.friends
class VkFriendIterator(Iterator):
def __init__(self, vk_user: VkUser):
self._vk_user = vk_user
self._index = 0
def __iter__(self):
return self
def __next__(self):
if self._index < len(self._vk_user.get_friends()):
friend = self._vk_user.get_friends()[self._index]
self._index += 1
return friend
else:
raise StopIteration
user = VkUser("Alice", ["Bob", "Charlie", "David", "Emma"])
friends_iterator = VkFriendIterator(user)
print(f"Friends of {user.name}:")
for friend in friends_iterator:
print(friend)