我最近看到了这段代码:
x = [2, 3, 4]
if type(x) is list:
#some logic
并且对if
条件如何消失感到困惑...我认为is
检查内存标识,而id
的{{1}}与{x
不同1}} id
,但如果是这样的情况,这list
条件是如何发生的呢? (我的印象是Python中唯一的原生单身是if
)。
答案 0 :(得分:2)
此处x
是类list
的实例,在新样式类type()
中返回实例本身的类,在本例中为list
。考虑这个简单的例子:
>>> class A(object):
pass
...
>>> type(A()) #calling type on the instance returns its class
<class '__main__.A'>
>>> type(A()) is A
True
请注意,上面的示例不适用于用户定义的旧式类,因为所有实例都是instance
类型。
>>> class A:
pass
...
>>> type(A())
<type 'instance'>