2012-01-27 15 views

risposta

18
getattr(my_object, my_str) 

More on getattr.

+0

Qual è il vantaggio rispetto a 'myobject .__ dict __ [my_str]'? prestazioni migliori? –

+3

Posso rispondere allo standard "È più Pythonic" risposta? Inoltre, attingere alle variabili private __ ha una sua serie di rischi. Quello che stai cercando di fare è ciò che getattr e setattr sono per. – Tom

+0

Ok grazie per le informazioni –

1
>>> myobject.__dict__[my_str] 
'stuff' 
+2

Si noti che questa interruzione per proprietà, '__slots__' e' __getattr __/__ getattribute __/__ setattr__' overload - e probabilmente alcune altre cose. – delnan

+0

Ok grazie per le informazioni. Pensi che 'getattr (my_object, my_str)' sia anche meglio per le prestazioni? –

+2

Le prestazioni sono la vostra minima preoccupazione qui. Se lo è, è possibile riscrivere quella parte (vale a dire l'intero ciclo, per evitare molte chiamate in più lingue) in C, ma si dovrebbe avere una solida prova di un rallentamento inaccettabile prima di considerare tali ottimizzazioni. – delnan

1

Non si può fare il __dict__ -approach in generale. Ciò che funziona sempre è

getattr(myobject, my_str) 

Se si vuole accedere dict-come, solo definire una classe con un indice-operatore di overload.

Problemi correlati