Python中isinstance()的否定形式

46

我该如何使用Python的isinstance()的负形式?

通常否定会像这样工作

x != 1

if x not in y

if not a

我只是没有看到使用isinstance()的例子,所以想知道是否有正确的方法来使用isinstance()的否定。


8
那么你的意思不是 not isinstance(...) 吗? - jmetz
3
你需要学习如何在每个Python结构中使用 not 吗? - JBernardo
3
大家仍然身处爱的夏天。公平地说,not in 的使用表明在表达式之前不一定需要加上 not,但有时它可能会出现在别的位置。也有可能存在一种更符合Python风格的方法来判断类型,而非使用 not isinstance()。例如,在某些微妙的情况下,可能需要使用不同的形式(就像 type(obj) is list 有时可以工作但并不是最优选择一样)。 - DSM
有两个特殊形式:x is not y 的意思与 not(x is y) 相同,而 x not in y 的意思与 not(x in y) 相同。 - MRAB
3个回答

53

只需使用not关键字。 isinstance函数仅返回一个bool类型的值,您可以像其他任何bool类型的值一样使用not


33

那看起来很奇怪,但是:

if not isinstance(...):
   ...
isinstance函数返回一个布尔值。这意味着您可以对其取反(或进行其他逻辑操作,如orand)。
例如:
>>> a="str"
>>> isinstance(a, str)
True
>>> not isinstance(a, str)
False

7

只需要使用 not,例如:

if not isinstance(someVariable, str):
     ....

你只是否定了 isinstance 函数返回的“真值”(布尔值)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接