Почему я не могу получить доступ к атрибуту instance.__class__ в Python?

Я новичок в Python, и я знаю, что, должно быть, мне не хватает чего-то довольно простого, но почему этот очень, очень простой код не работает?

class myClass:
    pass

testObject = myClass
print testObject.__class__

Я получаю следующую ошибку:

AttributeError: class myClass has no attribute '__class__'

Разве не каждый объект в Python имеет __class__ атрибут?

3 ответа

Решение

Я думаю, что понял свою ошибку. Я думал что код testObject = myClass создавал новый экземпляр / объект класса, но фактически назначал ссылку на сам класс. Я изменил код на:

class myClass: 
    pass 

testObject = myClass() 
print testObject.__class__ 

и теперь это работает, как я ожидал

Большинство, но не все объекты в Python имеют __class__ приписывать. Обычно вы можете получить к нему доступ, чтобы определить класс объекта.

Вы можете получить класс любого объекта, вызвав type в теме.

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

Классы старого стиля не имеют __class__ приписывать.

class myClass(object):
    pass
Другие вопросы по тегам