Нужно вывести всю информацию и найти среднее значение зарплаты всех сотрудников
Создайте класс Employee с параметрами:
name
age
salary
__init__(self,name, age, salary)def printData() // Данная функция возвращает все данные работника.
Создайте 2 класса которые наследуют от класса Employee:
1 – Programmer
programmingLanguage
__init__(self,name, age, salary, programmingLanguage)
Переопределите функцию printData() , относительно их параметрам.
2 – DataAnalytics
databaseTool
__init__(self,name, age, salary, databaseTool)
Переопределите функцию printData() , относительно их параметрам.
В основном классе вы должны создать несколько объектов класса Programmer, DataAnalytics и добавить их в общий список для Employee.
Нужно вывести всю информацию и найти среднее значение зарплаты всех сотрудников.
Вот, что сделал я:
1й файл:
class Employee:
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.salary = salary
def print_data(self):
return "Employee => " + self.name + " " + str(self.age) + " " + str(self.salary)
class Programmer(Employee):
def __init__(self, name, age, salary, programmingLanguage):
super().__init__(name, age, salary)
self.programmingLanguage = programmingLanguage
def print_data(self):
return "Programmer => " + self.name + " " + str(self.age) + " " + str(self.salary) + " " + self.programmingLanguage
class DataAnalytics(Employee):
def __init__(self, name, age, salary, databaseTool):
super().__init__(name, age, salary)
self.databaseTool = databaseTool
def print_data(self):
return "DataAnalytics => " + self.name + " " + str(self.age) + " " + str(self.salary) + " " + self.databaseTool
2ой файл:
from employee import Employee, Programmer, DataAnalytics
e1 = Employee('Victor', 29, 200000)
p2 = Programmer('Alexandra', 24, 300000, 'Java')
d3 = DataAnalytics('Ben', 27, 400000, 'SQL')
print(e1.print_data())
print(p2.print_data())
print(d3.print_data())
далее не могу понять как через новую функцию Нужно вывести всю информацию и найти среднее значение зарплаты всех сотрудников
Ответы (2 шт):
Создаем функцию, принимающую список юзеров и в ней вызываем у каждого юзера print_data и подсчитываем среднюю зарплату
Пример:
def print_all_data(users):
for u in users:
print(u.print_data())
print()
salaries = [u.salary for u in users]
mean_salary = sum(salaries) / len(salaries)
print(f'Средняя зарплата: {mean_salary}')
e1 = Employee('Victor', 29, 200000)
p2 = Programmer('Alexandra', 24, 300000, 'Java')
d3 = DataAnalytics('Ben', 27, 400000, 'SQL')
users = [e1, p2, d3]
print_all_data(users)
Результат:
Employee => Victor 29 200000
Programmer => Alexandra 24 300000 Java
DataAnalytics => Ben 27 400000 SQL
Средняя зарплата: 300000.0
PS.
Для большей читаемости кода, можно параметру функции print_all_data указать тип, пример:
from typing import List
def print_all_data(users: List[Employee]):
...
Не вполне понятно, что здесь требуется:
В основном классе вы должны создать несколько объектов класса Programmer, DataAnalytics и добавить их в общий список для Employee.
О каком основном классе идет речь, и что за общий список для Employee. Но похоже, что создать нужно только экземпляры классов Programmer и DataAnalytics, а вот экземпляры Employee не нужно.
И, возможно, подразумевается что-то вроде этого:
class Employee:
employees = [] # 'общий список для Employee'
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.salary = salary
def print_data(self):
return "Employee => " + self.name + " " + str(self.age) + " " + str(self.salary)
@classmethod
def all_data(cls):
return '\n'.join(e.print_data() for e in cls.employees)
@classmethod
def avr_salary(cls):
return sum(e.salary for e in cls.employees)/len(cls.employees)
class Programmer(Employee):
def __init__(self, name, age, salary, programmingLanguage):
super().__init__(name, age, salary)
self.programmingLanguage = programmingLanguage
super().employees.append(self)
def print_data(self):
return "Programmer => " + self.name + " " + str(self.age) + " " + str(self.salary) + " " + self.programmingLanguage
class DataAnalytics(Employee):
def __init__(self, name, age, salary, databaseTool):
super().__init__(name, age, salary)
self.databaseTool = databaseTool
super().employees.append(self)
def print_data(self):
return "DataAnalytics => " + self.name + " " + str(self.age) + " " + str(self.salary) + " " + self.databaseTool
тогда результат будет такой:
p2 = Programmer('Alexandra', 24, 300000, 'Java')
d3 = DataAnalytics('Ben', 27, 400000, 'SQL')
print(Employee.all_data())
'''
Programmer => Alexandra 24 300000 Java
DataAnalytics => Ben 27 400000 SQL
'''
print(Employee.avr_salary())
'''
350000.0