Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Работа на Python

Максим Петров Ученик (100), на голосовании 2 недели назад
1.1.Определить суперкласс "Сотрудник", включающий: -Конструктр, инициализирующий имя работника, его должность(по умолчанию None) и оклад(по умолчанию 0) должен принимать только int и float. -метод экземпляра для повышения оклада на какую то часть(например на 30%(0.3)) с округлением копеек. -магический метод __str__, который должен выводить данные о работнике в формате "Атрибут: объект.атрибут" по одной запси на каждой строке. 1.2.Определить класс "Менеджер", наследующий класс "Сотрудник" и передающий метод повышения оклада таким образом, что бы он еще больше повышал оклад за счет дополнительного бонуса в виде какой то части оклада. 1.3.Создать список должностей и словарь(Должность: оклад). При создании экземпляра класса, должность необходимо указывать в виде индекса из списка должностей. Оклад должен устанавливаться автоматически с помощью словаря. 1.4.Создать функцию, которая будет выводить на экран строковое представление объекта с информацией о сотруднике и повышать оклад за счет бонуса за должность. Создать экземпляр класса "Сергей" и должностью из списка.
Голосование за лучший ответ
overbafer_o7 Ученик (201) 1 месяц назад
 class Employee: 
def __init__(self, name, position=None, salary=0):
if isinstance(salary, (int, float)):
self.name = name
self.position = position
self.salary = round(salary, 2)
else:
raise TypeError("Salary must be an int or float")

def raise_salary(self, percentage):
if isinstance(percentage, (int, float)):
self.salary += round(self.salary * percentage, 2)
else:
raise TypeError("Percentage must be an int or float")

def __str__(self):
return f"Name: {self.name}\nPosition: {self.position}\nSalary: {self.salary}"


class Manager(Employee):
def __init__(self, name, position=None, salary=0, bonus_percentage=0):
super().__init__(name, position, salary)
self.bonus_percentage = bonus_percentage

def raise_salary(self, percentage):
super().raise_salary(percentage)
self.salary += round(self.salary * self.bonus_percentage, 2)

def __str__(self):
return f"Name: {self.name}\nPosition: {self.position}\nSalary: {self.salary}\nBonus Percentage: {self.bonus_percentage}"


positions = ["Developer", "Manager", "Team Lead", "HR", "Designer"]
salary_dict = {
"Developer": 50000,
"Manager": 60000,
"Team Lead": 70000,
"HR": 45000,
"Designer": 55000
}

class EmployeeWithPosition(Employee):
def __init__(self, name, position_index):
position = positions[position_index]
salary = salary_dict[position]
super().__init__(name, position, salary)


def display_employee_info(employee, raise_percentage, bonus_percentage=0):
print(employee)
if isinstance(employee, Manager):
employee.raise_salary(raise_percentage)
employee.bonus_percentage = bonus_percentage
else:
employee.raise_salary(raise_percentage)
print("\nUpdated Info:")
print(employee)


# Пример использования:
sergey = Manager("Sergey", 1, 60000, 0.1) # Менеджер с бонусом 10%
display_employee_info(sergey, 0.3, 0.05)

# Создание сотрудника с должностью из списка
employee = EmployeeWithPosition("Alex", 2) # Team Lead
print("\nNew Employee:")
print(employee)
Максим ПетровУченик (100) 1 месяц назад
Благодарю
Похожие вопросы