检查变量是否是类型的实例或无

时间:2018-06-17 10:16:29

标签: python python-3.x python-3.5 python-3.6

我有一个可以是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')

这不起作用,因为每个条件都否定了另一个条件并且总是会引发错误;

1 个答案:

答案 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函数,尝试使用其他函数以避免其他奇怪的错误