Python 3.7+dataclassesфункция
dataclasses.is_dataclass
интроспекция
True, если объект (класс или экземпляр) является dataclass.
Синтаксис
dataclasses.is_dataclass(obj)
Главная ловушка — True возвращается и для класса, и для его экземпляра, поэтому для проверки «передали именно объект» нужно дополнительно убедиться, что это не тип (isinstance(obj, type)). Проверка нужна перед asdict/astuple/fields: на не-датаклассе они бросают TypeError, а не возвращают пустой результат. Наследники датакласса тоже считаются датаклассами, даже если сами декоратором не помечены.
Примеры
import dataclasses
@dataclasses.dataclass
class P:
x: int
print(dataclasses.is_dataclass(P)) # → True
print(dataclasses.is_dataclass(42)) # → False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности