Что выведет код 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 ошибок.

Термины по теме