SqlAlchemy从对象获取模型名称

时间:2019-05-20 10:48:41

标签: python sqlalchemy

我有一个要传递给队列以写入数据库的对象。我需要执行一些逻辑检查以处理错误:

如何检查该对象是哪个模型?

c = Candidate(....)

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

我是否可以在Candidates语句中访问if

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

我意识到我可以做到:

if type(c) == <class 'models.Candidate'>,但不知道是否有更清洁的方法

3 个答案:

答案 0 :(得分:1)

isinstance怎么样?

if isinstance(c, models.Candidate):

如果Truec的实例或子类的实例,则它将返回models.Candidate

您偶尔会看到一些函数,用于检查它们收到的类型,例如: if isinstance(arg1, str): 要么 if isinstance(arg1, list):

答案 1 :(得分:0)

有两种方法:

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):
    ....

答案 2 :(得分:0)

如果要检查对象的类型,可以这样做,

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