Почему я не могу получить доступ к экземпляру .__ Class ___ атрибут в Python?

StackOverflow https://stackoverflow.com/questions/2835558

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top