I codici sono simili:come accedere alla variabile di classe per stringa in Python?
class Test:
a = 1
def __init__(self):
self.b=2
Quando faccio un'istanza di Test
, posso accedere alla sua istanza variabile b
simili (utilizzando la stringa "b"):
test = Test()
a_string = "b"
print test.__dict__[a_string]
Ma non funziona per a
come self.__dict__
non contiene una chiave denominata a
. Quindi, come posso accedere a a
se ho solo una stringa a
?
Grazie!
Il motivo 'self .__ dict__' non contiene una chiave chiamata' a' è che è in 'self .__ class __.__ dict__'. Se vuoi davvero fare le cose manualmente, puoi leggere l'ordine di ricerca degli attributi e controllare tutto nello stesso ordine ... ma davvero non vuoi fare le cose manualmente. (Dovresti occuparti di slot, proprietà, classi classic vs. new-style, '__dict__'s personalizzati, descrittori personalizzati e tutti i tipi di altre cose che è divertente conoscere, ma non direttamente rilevanti per risolvere il tuo problema.) – abarnert
PS, poiché questo è chiaramente Python 2.x, probabilmente si vuole 'class Test (oggetto)' qui, a meno che non si abbia una ragione specifica per evitare classi di nuovo stile. Anche per semplici piccoli programmi di test, vale la pena prendere l'abitudine. (E soprattutto per i programmi di test che si basano esplicitamente sui modi in cui i due tipi di classi differiscono ...) – abarnert