Сообщить об ошибке.

Функция is_dataclass() модуля dataclasses в Python

Проверка, является ли класс или его экземпляр структурой

Синтаксис:

import dataclasses

dataclasses.is_dataclass(class_or_instance)

Параметры:

  • class_or_instance - класс данных или его экземпляр.

Возвращаемое значение:

Описание:

Функция 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