在python中,我試圖通過一個對象wo(用戶定義)和wo.obj進行集成,而另一個用戶定義的對象我該如何告訴它是一個類的實例而不是普通的數據類型?如何區分一個類的實例和普通數據類型int/bool/float/etc
type(wo.obj)
<class '__main__.test'>
type(wo.obj) is types.InstanceType
False
type(wo.obj) is types.ClassType
False
在python中,我試圖通過一個對象wo(用戶定義)和wo.obj進行集成,而另一個用戶定義的對象我該如何告訴它是一個類的實例而不是普通的數據類型?如何區分一個類的實例和普通數據類型int/bool/float/etc
type(wo.obj)
<class '__main__.test'>
type(wo.obj) is types.InstanceType
False
type(wo.obj) is types.ClassType
False
要檢查實例是否是在一個特定的類,你可以使用isinstance:
mc = MyClass()
isinstance(mc, MyClass) # True
。
注意:這對於子類是正確的,還有一些其他的怪癖,參見this answer對類似的問題。
如果你只是檢查type
你會看到結果是<type 'instance'>
無論哪個「用戶定義」類它是一個實例。
type(notmc).__name__ == 'instance' #True
我懷疑這應該有某種形式的健康警示,如檢查類是否是實例類型似乎不是一個非常密集的檢查。
爲什麼你需要這樣做? –
Python原語也是類的實例。一切都是一個對象。 – geoffspear
與類的實例不同,沒有像普通數據類型那樣的東西。有一些「內建」類型,但它們幾乎是每個詞的意義上的對象,並區分它們幾乎從來沒有意義。無論你想要解決什麼問題,這都是一個完全錯誤的方法。刪除此問題並詢問有關* actual *問題的問題。 (參見[XY問題](http://meta.stackexchange.com/q/66377)) – delnan