Domanda

Sono nuovo di Python, e so che devo essere perso qualcosa piuttosto semplice, ma perché non fa questo molto, molto semplice il lavoro codice?

class myClass:
    pass

testObject = myClass
print testObject.__class__

ottengo il seguente errore:

AttributeError: class myClass has no attribute '__class__'

non tutti gli oggetti in Python ha un attributo __class__?

È stato utile?

Soluzione

Credo che ho realizzato il mio errore. Ho pensato che il codice testObject = myClass stava creando una nuova istanza / oggetto della classe, ma è stato effettivamente assegnando un riferimento alla classe stessa. Ho cambiato il codice per:

class myClass: 
    pass 

testObject = myClass() 
print testObject.__class__ 

e ora lavora come mi aspettavo

Altri suggerimenti

La maggior parte, ma non tutti, gli oggetti in Python ha un attributo __class__. Di solito è possibile accedervi per determinare la classe di un oggetto.

È possibile ottenere la classe di qualsiasi oggetto chiamando type su di esso.

>>> class myClass:
...     pass
... 
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>

classi vecchio stile non hanno un attributo __class__.

class myClass(object):
    pass
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top