Django-Python. Определить тип объекта класса регулярным выражением

Необходимо сопоставить тип объекта модели во вспомогательном функционале модуля service. Простым способом, конесно, было бы

result = type(obj) is MyModel

но импорт MyModel из модуля models в service невозможен. Приходится искать соответствие в текстовом выводе типа объекта:

result = 'MyModel' in str(type(t))

но такой способ весьма не надёжен, т.к. искомый текст может встетиться не только, как класс модели.

Пытаюсь реализовать это с помощью регулярного выражения:

import re
result = re.match(r'.MyModel$', str(type(t))

например, проверить из "<class '__main__.MyModel'>" но

result = None

Как можно лаконично это выполнить?


Ответы (1 шт):

Автор решения: Мистер Фикс

Сравнивать типы классы с помощью строк, некорректно. Если нет возможности импортировать модель в service, то нужно просто сделать третий файл, в который вы импортируете вашу модель.

from models import MyModel


def is_my_model_instance(some_obj):
    b = isinstance(some_obj, MyModel)  # используйте встроенную функцию 
    return b


#В файле service
from my_file import is_my_model_instance

# ...
b = is_mi_model_instance(some_object)
# ...
→ Ссылка