2010-05-14 116 views
0

我是Python的新手,我知道我必須缺少一些非常簡單的東西,但爲什麼這個非常非常簡單的代碼工作起來呢?爲什麼我不能在Python中訪問實例.__ class__屬性?

class myClass: 
    pass 

testObject = myClass 
print testObject.__class__ 

我得到以下錯誤:

AttributeError: class myClass has no attribute '__class__' 

不Python中的每個對象都有一個__class__屬性?

+0

錯誤只在Python 2.x中存在在Python 3.1中'__class__'不會產生錯誤。而且,你爲什麼還在使用舊式課程? – kennytm 2010-05-14 16:02:10

+0

@KennyTM - 這可能很密集,但是......舊式課程是什麼? – froadie 2010-05-14 16:09:37

+0

不是從'object'派生的類。 – kennytm 2010-05-14 16:13:59

回答

3

我想我意識到了我的錯誤。我認爲代碼testObject = myClass正在創建該類的新實例/對象,但實際上是爲該類本身分配引用。我改變了代碼:

class myClass: 
    pass 

testObject = myClass() 
print testObject.__class__ 

,它現在作爲我期待

1

舊式類沒有__class__屬性。

class myClass(object): 
    pass 
2

Python中的大多數(但不是全部)對象都具有__class__屬性。您通常可以訪問它來確定對象的類。

您可以通過調用type來獲得任何對象的類。

>>> class myClass: 
...  pass 
... 
>>> testObject = myClass 
>>> type(testObject) 
<type 'classobj'> 
相關問題