我有一个要传递给队列以写入数据库的对象。我需要执行一些逻辑检查以处理错误:
如何检查该对象是哪个模型?
c = Candidate(....)
type(c)
<class 'models.Candidate'>
我是否可以在Candidates
语句中访问if
?
if type(c)... == 'Candidate':
我意识到我可以做到:
if type(c) == <class 'models.Candidate'>
,但不知道是否有更清洁的方法
答案 0 :(得分:1)
isinstance怎么样?
if isinstance(c, models.Candidate):
如果True
是c
的实例或子类的实例,则它将返回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