Чтобы сделать так, чтобы на атрибут users
ссылались вместе, нужно использовать декоратор @classmethod
внутри класса, объявляющего этот атрибут. Декоратор @classmethod
указывает, что метод должен быть вызван для всего класса, а не для отдельного экземпляра класса, и в качестве первого аргумента принимает ссылку на сам класс.
Вот пример кода, который показывает, как это реализовать:
class MyClass: # Объявление атрибута users users = [] # Метод класса, который будет обращаться к атрибуту users @classmethod def get_users(cls): return cls.users # Пример добавления элемента в список users @classmethod def add_user(cls, user): cls.users.append(user)
Теперь пользователи будут общими для всех экземпляров класса MyClass
. Метод get_users()
возвращает список пользователей, а метод add_user(user)
добавляет нового пользователя в список.
Пример использования:
# Создание экземпляров класса obj1 = MyClass() obj2 = MyClass() # Добавление пользователей obj1.add_user('User 1') obj2.add_user('User 2') # Получение списка пользователей print(obj1.get_users()) # ['User 1', 'User 2'] print(obj2.get_users()) # ['User 1', 'User 2']
Вывод показывает, что список пользователей одинаковый для обоих экземпляров класса MyClass
. Это происходит потому, что оба экземпляра используют один и тот же атрибут users
, к которому они обращаются через методы класса.