为什么我无法在Python中访问instance.__class__属性?

0 投票
3 回答
3694 浏览
提问于 2025-04-15 22:42

我刚开始学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__ 

现在它的运行结果和我预期的一样了。

撰写回答