1
最近我看到這樣的代碼:困惑身份,是運營商
x = [2, 3, 4]
if type(x) is list:
#some logic
和感到困惑的if
條件如何去了......我以爲is
檢查內存身份和x
的id
不同於list
的id
,但如果情況如此,那麼if
條件甚至會失效? (我的印象是,Python中唯一的本地單身人士是None
)。
最近我看到這樣的代碼:困惑身份,是運營商
x = [2, 3, 4]
if type(x) is list:
#some logic
和感到困惑的if
條件如何去了......我以爲is
檢查內存身份和x
的id
不同於list
的id
,但如果情況如此,那麼if
條件甚至會失效? (我的印象是,Python中唯一的本地單身人士是None
)。
這裏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'>
它沒有檢查x的id。它檢查x的類型的id。 – M4rtini
@ M4rtini我仍然從id(type(x))和id(type(list))得到不同的'id'值' –
@EdgarAroutiounian'type(list)'是'type','type(x )'是'list',爲什麼會有ID相同? –