import dataclasses dataclasses.is_dataclass(class_or_instance)
class_or_instance
- класс данных или его экземпляр.bool
.Функция is_dataclass()
модуля dataclasses
возвращает True
, если его параметр является классом данных или его экземпляром, в противном случае возвращает False
.
Если нужно знать, является ли класс экземпляром класса данных, а не самим классом данных, добавьте дополнительную проверку на isinstance(obj, type)
:
def is_dataclass_instance(obj): return is_dataclass(obj) and not isinstance(obj, type)
from dataclasses import dataclass, is_dataclass class MyClass: def __init__(self, name, age): self.name = name self.age = age @dataclass class Person: name: str age: int # проверка обычного класса >>> p1 = MyClass('John Doe', 34) >>> is_dataclass(p1) # False # проверка класса данных >>> p = Person('John Doe', 34) >>> is_dataclass(p) # True >>> is_dataclass(Person) # True # определим функцию для проверки # класса данных только на экземпляр >>> def is_dataclass_instance(obj): ... return is_dataclass(obj) and not isinstance(obj, type) ... >>> is_dataclass_instance(Person) # False >>> is_dataclass_instance(p) # True