为什么我无法在Python中访问instance.__class__属性?
我刚开始学Python,觉得自己可能漏掉了什么简单的东西,但为什么这段非常简单的代码不工作呢?
class myClass:
pass
testObject = myClass
print testObject.__class__
我遇到了以下错误:
AttributeError: class myClass has no attribute '__class__'
难道Python中的每个对象都有一个__class__
属性吗?
3 个回答
1
旧式类没有一个叫做 __class__
的属性。
class myClass(object):
pass
2
在Python中,大多数对象都有一个叫做__class__
的属性,虽然不是所有对象都有。你通常可以通过这个属性来查看一个对象属于哪个类。
你也可以通过调用type
函数来获取任何对象的类。
>>> class myClass:
... pass
...
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>
3
我想我明白我之前的错误了。我原本以为代码 testObject = myClass
是在创建这个类的新实例或对象,但实际上它只是把这个类本身的引用赋值给了 testObject
。我把代码改成了:
class myClass:
pass
testObject = myClass()
print testObject.__class__
现在它的运行结果和我预期的一样了。