Лабораторная работа №1 Конструктор и деструктор Лабораторная работа №2 Перегрузка операторов
Задание
Напишите программу по следующему описанию:
1. Создайте класс «Сотрудник», конструктор __init__() которого принимает три параметра (не учитывая self) – имя (name), фамилию (lastname) и разряд сотрудника (discharge). Разряд имеет значение, заданное по умолчанию, равное 6.
2. У класса «Сотрудник» создайте метод conclusion, позволяющий выводить строку, содержащую всю информацию о сотруднике.
3. У класса «Сотрудник» создайте деструктор __del__(), который выводит на экран фразу «Всего доброго, …» (вместо многоточия должны выводиться имя и фамилия сотрудника).
4. Создайте три объекта класса «Сотрудник»: Иван Иванов, имеющий 3 разряд; Петр Петров, имеющий 5 разряд; Петр Сидоров, имеющий 2 разряд.
5. Применяя деструктор, а также условные операторы, попрощайтесь с сотрудником, имеющим минимальное значение разряда.
Задание
1. Создайте класс «snowflakes», в конструкторе класса инициируйте поле, содержащее количество снежинок «number_of_snowflakes».
2. В классе пропишите следующие методы перегрузки арифметических операторов:
1) __add__() – сложение;
2) __ sub __() – вычитание;
3) __ mul __() – умножение;
4) __ truediv__() – деление (деление «/», при этом необходимо организовать округление значения до целого числа);
5) __ floordiv__() – деление (целочисленное деление «//»);
6) __ mod __ () – остаток от деления (%).
3. Создайте объект класса «snowflakes» – A;
4. Применяя функцию «print», проверьте работоспособность перегрузки операторов.
Мой код: (не получается его запустить, self. name, с пробеолм т.к. mail считает ссылкой)
class Person:
def _init_(self, n, s, q=1):
self. name = n
self.surname = s
self.skill =q
def _del_(self):
print("Всего доброго", self. name, self.surname)
def info(self):
return "{} {}, {}".format(self. name, self.surname, self.skill)
worker = Person("И", "Иванов", 3)
helper = Person("П", "Петров", 5)
maker = Person("П", "Сидоров", 2)
print(worker.info())
print(helper.info())
print(maker.info())
del helper
print("Конец программы")
input()
1
class Employee:
def __init__(self, name, lastname, discharge=6):
self.name = name
self.lastname = lastname
self.discharge = discharge
def __del__(self):
print(f"Всего доброго, {self.name} {self.lastname}")
def conclusion(self):
print(f"Имя: {self.name}, Фамилия: {self.lastname}, Разряд: {self.discharge}")
ivan = Employee("Иван", "Иванов", 3)
petr = Employee("Петр", "Петров", 5)
sidor = Employee("Петр", "Сидоров", 2)
employees = [ivan, petr, sidor]
min_discharge_employee = min(employees, key=lambda x: x.discharge)
for employee in employees:
employee.conclusion()
if employee == min_discharge_employee:
print(f"Прощайте, {employee.name} {employee.lastname} с минимальным разрядом {employee.discharge}")
del employee
else:
print(f"До свидания, {employee.name} {employee.lastname}")
2
class Snowflakes:
def __init__(self, number_of_snowflakes):
self.number_of_snowflakes = number_of_snowflakes
def __add__(self, other):
return Snowflakes(self.number_of_snowflakes + other.number_of_snowflakes)
def __sub__(self, other):
return Snowflakes(self.number_of_snowflakes - other.number_of_snowflakes)
def __mul__(self, other):
return Snowflakes(self.number_of_snowflakes * other.number_of_snowflakes)
def __truediv__(self, other):
return Snowflakes(round(self.number_of_snowflakes / other.number_of_snowflakes))
def __floordiv__(self, other):
return Snowflakes(self.number_of_snowflakes // other.number_of_snowflakes)
def __mod__(self, other):
return Snowflakes(self.number_of_snowflakes % other.number_of_snowflakes)
def __str__(self):
return f"Number of snowflakes: {self.number_of_snowflakes}"
A = Snowflakes(10)
B = Snowflakes(5)
print(A + B)
print(A - B)
print(A * B)
print(A / B)
print(A // B)
print(A % B)