为什么我不能访问Python中的实例.__ class__属性?

时间:2010-05-14 15:54:07

标签: python class-attribute

我是Python的新手,我知道我必须错过一些非常简单的东西,但为什么这个非常非常简单的代码不起作用呢?

class myClass:
    pass

testObject = myClass
print testObject.__class__

我收到以下错误:

AttributeError: class myClass has no attribute '__class__'

Python中的每个对象都不具有__class__属性吗?

3 个答案:

答案 0 :(得分:3)

我想我意识到自己的错误。我认为代码testObject = myClass正在创建类的新实例/对象,但它实际上是为类本身分配了一个引用。我将代码更改为:

class myClass: 
    pass 

testObject = myClass() 
print testObject.__class__ 

现在它正如我期待的那样工作

答案 1 :(得分:2)

Python中的大多数(但不是全部)对象都具有__class__属性。您通常可以访问它来确定对象的类。

您可以通过调用type来获取任何对象的类。

>>> class myClass:
...     pass
... 
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>

答案 2 :(得分:1)

旧式类没有__class__属性。

class myClass(object):
    pass