Почему я не могу получить доступ к экземпляру .__ Class ___ атрибут в Python?
-
26-09-2019 - |
Вопрос
Я новичок в Python, и я знаю, что я должен пропустить что-то довольно простое, но почему это не очень, очень простой код?
class myClass:
pass
testObject = myClass
print testObject.__class__
Я получаю следующую ошибку:
AttributeError: class myClass has no attribute '__class__'
Разве каждый объект в Python не имеет __class__
атрибут?
Решение
Я думаю, что понял свою ошибку. Я думал, что код 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
Не связан с StackOverflow