2012-01-27 10 views

Respuesta

18
getattr(my_object, my_str) 

More on getattr.

+0

¿Cuál es la ventaja contra 'myobject .__ dict __ [my_str]'? mejor interpretación ? –

+3

¿Puedo recurrir a la respuesta estándar "It's more Pythonic"? Además, aprovechar las variables privadas __ viene con su propio conjunto de riesgos. Lo que estás tratando de hacer es para qué son getattr y setattr. – Tom

+0

Ok, gracias por la información –

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

Tenga en cuenta que esto se rompe por propiedades, '__slots__' y' __getattr __/__ getattribute __/__ setattr__' sobrecargas, y probablemente algunas otras cosas. – delnan

+0

Ok gracias por la información. ¿Crees que 'getattr (my_object, my_str)' es mejor para el rendimiento también? –

+2

El rendimiento es su menor preocupación aquí. Si es así, podría reescribir esa parte (es decir, todo el ciclo, para evitar muchas llamadas en varios idiomas) en C, pero debería tener una prueba sólida de una desaceleración inaceptable antes de considerar tales optimizaciones. – delnan

1

No se puede hacer la -enfoque __dict__ en general. Lo que siempre funcionará es

getattr(myobject, my_str) 

Si desea un acceso tipo dict, simplemente defina una clase con un operador de índice sobrecargado.

Cuestiones relacionadas