SqlAlchemy получает имя модели из объекта - PullRequest
0 голосов
/ 20 мая 2019

У меня есть объект, который я передаю в очередь для записи в базу данных.Мне нужно выполнить некоторые логические проверки для обработки ошибок:

Как я могу проверить, какая модель является этим объектом?

c = Candidate(....)

type(c)
<class 'models.Candidate'>

есть ли в любом случае доступ к Candidates в операторе if?

if type(c)... == 'Candidate':

Я понимаю, что могу просто сделать:

if type(c) == <class 'models.Candidate'>, но не знал, был ли более чистый путь

Ответы [ 3 ]

1 голос
/ 20 мая 2019

Как насчет isinstance ?

if isinstance(c, models.Candidate):

Возвращается True, если c является экземпляром models.Candidate или экземпляром подкласса.

Вы иногда будете видеть функции, которые проверяют, какие типы они получили, такие как: if isinstance(arg1, str): или же if isinstance(arg1, list):

0 голосов
/ 20 мая 2019

Если вы хотите проверить тип объекта ,,, Вы можете сделать это ,,,

class Foo:
  pass
f = Foo()
print(isinstance(f, Foo)) # True
print(type(f) is Foo) # True (also use == possible)
print(f.__class__ is Foo) # True (also use == possible)

isinstance(obj, type) # this works also on subclasses.
class Boo(Foo):
   pass
b = Boo()
isinstance(b, Foo) # True
0 голосов
/ 20 мая 2019

Есть два способа:

1) - по названию класса

def get_class_name(variable)
    return type(variable).__class__.__name__

var = "Hello"
if get_class_name(var) == 'str':
    ...

2) - с помощью isinstance

var = "Hello"
if isinstance(var, str):
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...