для аннотации типа в случаях, когда предоставляется только имя атрибута, и это также упоминается в PEP с примером.

в классе данных есть поле, типом которого может быть что угодно, как вы можете опустить аннотацию?

@dataclass
class Favs:
    fav_number: int = 80085
    fav_duck = object()
    fav_word: str = 'potato'

Кажется, что код выше на самом деле не создает поле дляfav_duck, Это просто делает это простым атрибутом старого класса.

>>> Favs()
Favs(fav_number=80085, fav_word='potato')
>>> print(*Favs.__dataclass_fields__)
fav_number fav_word
>>> Favs.fav_duck
<object at 0x7fffea519850>

Ответы на вопрос(2)

Ваш ответ на вопрос