python - 对身份感到困惑并且是运算符(operator)

标签 python python-2.6

我最近看到了这段代码:

x = [2, 3, 4]
if type(x) is list:
    #some logic

并且很困惑 if 条件是如何关闭的...我认为 is 检查内存标识和 id >xlistid 不同,但如果是这样的话,这个 if 条件是如何发生的呢? (我的印象是 Python 中唯一的原生单例是 None)。

最佳答案

这里x是类 list 的一个实例,在新风格的类(class)中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'>

关于python - 对身份感到困惑并且是运算符(operator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21633789/

相关文章:

python - 使用 Python/Pandasplotly/cufflinks 控制布局参数

python - lxml python 2.5 ElementMaker语法错误

python - Tron 游戏碰撞 - turtle python

Python:按数组长度对二维数组进行排序?

python - 以特殊格式打印当前 UTC 日期时间

python - 在 OS X 10.6.8 上安装 numpy 的问题

python - 如何在不按回车键的情况下在 python 中获取按下的键?

python - 检查数字 (mod 2) 是否有余数 0 的函数不起作用

java - 在android上运行java内的python脚本

python - Keras - model.predict_classes 给出了错误的标签