2010-05-14 121 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'> 
相关问题