РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pyTsTmOpL12 87 of 89 menu

Задачи на ООП в Python. Часть 12

Дан класс:

class User: def __init__(self, name, age): self.name = name self.age = age

Создайте два разных объекта с одинаковыми значениями свойств. Сравните их через == и через is. Объясните результат.

Сделайте функцию compareById, которая принимает два объекта и возвращает True, если переменные ссылаются на один и тот же объект (используйте is).

Сделайте функцию compareByAttrs, которая принимает два объекта и возвращает True, если они экземпляры одного класса и у них одинаковые значения публичных свойств (сравните __dict__).

Сделайте функцию compare, которая возвращает 1, если переменные ссылаются на один объект; 0, если объекты разные, но одного класса и с теми же свойствами; -1 в остальных случаях.

Дан класс работника:

class Employee: def __init__(self, name, salary): self.name = name self.salary = salary

Сделайте класс EmployeesCollection с методами add и get. В add не добавляйте работника, если в коллекции уже есть объект с такими же свойствами (сравните через вашу compareByAttrs или через __dict__).

Проверьте: два разных объекта с одинаковыми именем и зарплатой не должны оба попасть в коллекцию.

Измените логику add: теперь не добавляйте только тот же самый объект (сравнение через is). Объекты с одинаковыми свойствами, но разные по идентичности, должны добавляться.

Проверьте новую логику: один и тот же объект дважды не добавится, а два разных с одинаковыми данными — добавятся.

Сделайте метод __eq__ в классе Employee, чтобы == сравнивал объекты по имени и зарплате.

Перепишите проверку в add через оператор ==, используя ваш __eq__.

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить