Содержание
Создайте класс User и его наследника класс SuperUser, которые описывают пользователя и супер-пользователя. В классе User необходимо описать:
- конструктор, который принимает в качестве параметров значения для атрибутов name: str, login: str и password: str, grade: int
- свойства для изменения и получения значений атрибутов
- метод show_info, который печатает в произвольном формате значения атрибутов name и login
- атрибут класса count для хранения количества созданных экземпляров класса User
Необходимые условия, которые надо учесть: При этом:
- атрибут name доступен и для чтения, и для изменения
- атрибут login доступен только для чтения. При попытке изменения вернуть строку "Невозможно изменить логин!"
- атрибут password доступен только для изменения. При обращении на чтение вернуть звёздочки (********)
- атрибут grade не доступен ни для чтения, ни для изменения. При попытке изменения и обращения на чтение вернуть строку "Неизвестное свойство grade ".
- объекты класса User должны иметь возможность сравниваться по значению атрибута grade с помощью операторов сравнения
В классе SuperUser необходимо описать:
- конструктор, который принимает в качестве параметров значения для атрибутов name, login, password и role
- свойство для изменения и получения значения атрибута role: str
- метод show_info, который печатает в произвольном формате значения атрибутов name, login и role
- атрибут класса count для хранения количества созданных экземпляров класса SuperUser
Благодря этой практической работе, я стал лучше понимать:
• Инициализацию объектовов класса с помощью конструктора
• Создание классов с атрибутами и методами
• Доступ к атрибутам и методам объектов
• Создание подклассов, которые наследуют атрибуты и методы родительского класса
• Переопределение методов и атрибутов в подклассах
• Ограничение доступа к атрибутам и методам с помощью модификаторов доступа (public, protected, private)
• Использование свойств для безопасного доступа к закрытым атрибутам
• Переопределение поведения стандартных операторов (например, сравнения) для работы с объектами определенных классов
• Создание методов с одинаковыми именами в разных классах, которые ведут себя по-разному в зависимости от типа объекта
• Использование атрибутов класса для хранения информации об экземплярах класса
• Использование магических методов для переопределения поведения объектов (например, str для форматирования строк)