Что выведет код Middle ООП и dataclasses обновлено
Сравнение и repr у dataclass
Вопрос
Что выведет код? По строке на каждый print.
from dataclasses import dataclass, field
@dataclass(order=True)
class Ver:
major: int
minor: int
label: str = field(default='', compare=False)
a = Ver(1, 2, 'rc')
b = Ver(1, 2)
print(a == b, a < Ver(1, 10))
print(a)
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: True True, Ver(major=1, minor=2, label='rc'). compare=False исключает label из eq и сравнений, поэтому a == b. order=True генерирует сравнения как у кортежей полей: (1, 2) < (1, 10) истинно, сравнение числовое, а не строковое. repr показывает все поля, включая label.
Что выведет
True True
Ver(major=1, minor=2, label='rc')
Разбор
compare=False исключает label из __eq__ и сравнений, поэтому a == b. order=True генерирует сравнения как у кортежей полей: (1, 2) < (1, 10) истинно, сравнение числовое, а не строковое. __repr__ показывает все поля, включая label.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.