Python 身份混淆,是操作员吗
我最近看到了以下代码:Python 身份混淆,是操作员吗,python,python-2.6,Python,Python 2.6,我最近看到了以下代码: x = [2, 3, 4] if type(x) is list: #some logic 我想,is检查内存标识,x的id与list的id不同,但是如果是这样的话,if条件是怎么发生的呢?(我当时的印象是Python中唯一的原生单例是None)。这里x是classlist的一个实例,在新样式的classtype()中返回实例本身的类,即本例中的list。考虑这个简单的例子: >>> class A(object): pass ...
x = [2, 3, 4]
if type(x) is list:
#some logic
我想,
is
检查内存标识,x
的id
与list
的id
不同,但是如果是这样的话,if
条件是怎么发生的呢?(我当时的印象是Python中唯一的原生单例是None
)。这里x
是classlist
的一个实例,在新样式的classtype()
中返回实例本身的类,即本例中的list
。考虑这个简单的例子:
>>> class A(object):
pass
...
>>> type(A()) #calling type on the instance returns its class
<class '__main__.A'>
>>> type(A()) is A
True
它没有检查x的id。它正在检查x类型的id。@M4rtini我仍然从
id(type(x))
和id(type(list))
@edgararroutiouniantype(list)
是type
,而type(x)
是list
,为什么会有相同的id?id(type(x))
和id(list)
应该为您提供相同的id。类型(列表)
只需为您提供类型对象的类型,而不会是相同的。列表
类型的副本有多少?
>>> class A:
pass
...
>>> type(A())
<type 'instance'>