Почему я не могу получить доступ к атрибуту 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