Sobes.tech
Junior — Middle
96

Пайдаланушыларға басқа пайдаланушылардың жаңартуларына жазылу мүмкіндігін беретін функционалды қалай жүзеге асыруға болады?

AI-дан жауап

sobes.tech AI

Для реализации функциональности подписки пользователей друг на друга можно использовать структуру данных, которая хранит связи между пользователями — кто на кого подписан. В Python это часто реализуется через базы данных с таблицей подписок или через словари/множества в памяти.

Пример на Python с использованием словаря, где ключ — пользователь, а значение — множество пользователей, на которых он подписан:

class SubscriptionService:
    def __init__(self):
        self.subscriptions = {}  # {user_id: set of user_ids}

    def subscribe(self, follower_id, followee_id):
        if follower_id == followee_id:
            return  # нельзя подписаться на себя
        self.subscriptions.setdefault(follower_id, set()).add(followee_id)

    def unsubscribe(self, follower_id, followee_id):
        if follower_id in self.subscriptions:
            self.subscriptions[follower_id].discard(followee_id)

    def get_followees(self, user_id):
        return self.subscriptions.get(user_id, set())

# Использование
service = SubscriptionService()
service.subscribe('user1', 'user2')
service.subscribe('user1', 'user3')
print(service.get_followees('user1'))  # {'user2', 'user3'}

В реальном приложении обычно используется база данных с таблицей подписок, где каждая запись содержит follower_id и followee_id. Это позволяет эффективно хранить и запрашивать подписки.