Python 3.7+dataclassesфункция
dataclasses.fields()
field
Возвращает кортеж объектов Field с метаданными каждого поля датакласса.
Синтаксис
dataclasses.fields(class_or_instance)
Это единственный поддерживаемый способ пройтись по полям датакласса — именно на нём строят валидацию, сериализацию и сравнение «по полям» в своём коде. Возвращаются только настоящие поля: псевдополя InitVar и аннотации ClassVar в кортеж не попадают. Два подвоха: f.type — это аннотация как она записана, то есть строка, если в модуле есть from __future__ import annotations; а отсутствие значения по умолчанию обозначается сентинелом dataclasses.MISSING, а не None.
Примеры
from dataclasses import dataclass, fields
@dataclass
class Pt:
x: int; y: int = 0
for f in fields(Pt):
print(f.name, f.type) # → ? две строки: «x <class 'int'>» и «y <class 'int'>»
print(fields(Pt)[0].name) # → x
print(fields(Pt)[1].default) # → 0
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности