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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top