Perché non è possibile accedere all'istanza .__ attributo class__ in Python?
-
26-09-2019 - |
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__
?
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