我有一个可以是int或None的变量。如果是别的我会引发错误。
我有以下代码:
if not isinstance(id, (int, )) or id is not None:
raise AttributeError('must be called with a id of type INT or NONE')
这不起作用,因为每个条件都否定了另一个条件并且总是会引发错误;
答案 0 :(得分:8)
首先,您需要or
而不是if not isinstance(id, (int, )) and id is not None:
raise AttributeError('must be called with a id of type INT or NONE')
:
int
说明:您正在检查变量是否 而不是None
和而不是True
,因为如您所说,检查一个或另一个<{1}}
如果您希望将其缩小为单一检查,则可以执行以下操作:
if not isinstance(id, (int, type(None))):
raise AttributeError('must be called with a id of type INT or NONE')
注意:您正在使用该名称隐藏内置id
函数,尝试使用其他函数以避免其他奇怪的错误