Python
Описати базовий клас Користувач (User)
Конструктор класу приймає обов'язковий параметр "Ім'я користувача" (username) і зберігає його значення як прихований атрибут об'єкту без використання сеттера для збереження цього значення.
Конструктор класу приймає обов'язковий параметр "Очікувана дія" (expected_action) і зберігає його значення як прихований атрибут об'єкту без використання сеттера для збереження цього значення.
Клас має наступні методи об'єкту:
Виконати дію (perform_action), задача якого вивести на екран наступне повідомлення "Степан виконує дію: 'Нищити русню'", якщо об'єкт класу був проініціалізований з параметрами "Степан" і "Нищити русню";
Геттер (get_username) та сеттер (set_username) для прихованого атрибуту _username:
Сеттер приймає параметр "значення" (value) та змінює значення атрибуту _username на value;
Сеттер має змінювати регістр атрибуту _username на "Кожна перша літера кожного слова - велика".
Описати для класу Користувач (User) дочірні класи: тестувальник (QA) та менеджер (Manager).
Клас Тестувальник (QA) має:
Унаслідувати всі методи і атрибути класу Користувач (User).
В конструкторі, в додачу до ініціалізації атрибутів з базового класу, мати атрибут "Задачі" (tasks) зі значенням порожнього списку за замовчуванням.
Клас має наступні методи об'єкту:
Поставити задачу (set_task) з обов'язковим параметром task. Задача методу - додати до списку задач (атрибут об'єкту tasks) значення параметру task.
Клас Менеджер (Manager) має:
Унаслідувати всі методи і атрибути класу Користувач (User).
Клас має наступні методи об'єкту:
Метод perform_action із базового класу має бути перевизначений. Його нова функціональність - вивести на екран фразу "Зайнятий. Напишіть мені листа з Вашим питанням".
Додаткові умови:
Ім'я тестувальника (input_qa_name) вводиться користувачем з клавіатури;
Ім'я менеджера (input_pm_name) вводиться користувачем з клавіатури;
Очікувана дія для тестувальника (input_qa_expected_action) вводиться користувачем з клавіатури;
Очікувана дія для менеджера (input_pm_expected_action) вводиться користувачем з клавіатури;
Задача для тестувальника (input_qa_task) вводиться користувачем з клавіатури;
Використовуйте запропоновані назви методів і класів.
Ответы на вопрос
class User:
def __init__(self, username, expected_action):
self._username = username
self._expected_action = expected_action
def perform_action(self):
print(f"{self._username} виконує дію: '{self._expected_action}'")
def get_username(self):
return self._username
def set_username(self, value):
self._username = ' '.join(word.capitalize() for word in value.split())
class QA(User):
def __init__(self, username, expected_action):
super().__init__(username, expected_action)
self.tasks = []
def set_task(self, task):
self.tasks.append(task)
class Manager(User):
def perform_action(self):
print("Зайнятий. Напишіть мені листа з Вашим питанням")
# User input
input_qa_name = input("Введіть ім'я тестувальника: ")
input_qa_expected_action = input("Введіть очікувану дію для тестувальника: ")
input_pm_name = input("Введіть ім'я менеджера: ")
input_pm_expected_action = input("Введіть очікувану дію для менеджера: ")
input_qa_task = input("Введіть задачу для тестувальника: ")
# Create instances
qa_user = QA(input_qa_name, input_qa_expected_action)
pm_user = Manager(input_pm_name, input_pm_expected_action)
# Set task for QA user
qa_user.set_task(input_qa_task)
# Test the functionality
qa_user.perform_action()
print(f"Tasks for QA user: {qa_user.tasks}")
pm_user.perform_action()