Por que não posso acessar o atributo de instância .__ Class__ em Python?
-
26-09-2019 - |
Pergunta
Sou novo no Python e sei que devo estar perdendo algo bem simples, mas por que esse código muito, muito simples não funciona?
class myClass:
pass
testObject = myClass
print testObject.__class__
Estou tendo o erro a seguir:
AttributeError: class myClass has no attribute '__class__'
Todo objeto em Python não tem um __class__
atributo?
Solução
Acho que percebi meu erro. Eu pensei que o código testObject = myClass
estava criando uma nova instância/objeto da classe, mas na verdade estava atribuindo uma referência à própria classe. Eu mudei o código para:
class myClass:
pass
testObject = myClass()
print testObject.__class__
E agora funciona como eu esperava
Outras dicas
A maioria, mas não todos, objetos em python têm um __class__
atributo. Geralmente, você pode acessá -lo para determinar a classe de um objeto.
Você pode obter a classe de algum objeto chamando type
nele.
>>> class myClass:
... pass
...
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>
Aulas de estilo antigo não têm um __class__
atributo.
class myClass(object):
pass