He escrito C# y el mantra que viene de lo alto parece ser "nunca usar reflejo en el código de producción". Lo he usado para el código de prueba, pero nunca nada que se ejecute en la naturaleza. Todos los argumentos parecen razonables, y siempre hay una forma de hacerlo agregando otra capa de abstracción o patrón de diseño o lo que sea.¡Nunca use reflejo en el código de producción! ¿Qué hay de Python?
Ahora estoy empezando a escribir un código Python serio, me pregunto si se aplica el mismo principio. Parece que Python está diseñado con la reflexión en mente. Los módulos y las clases almacenan miembros en un diccionario de fácil acceso. Las clases meta de los modelos de Django, por ejemplo, toman cadenas para hacer referencia a los miembros.
Podría escribir C#/Java en Python pero realmente no quiero. Todavía creo firmemente en 'no hay reflexión' para dichos idiomas. ¿La forma de Python es fundamentalmente diferente?
Esto es curioso, porque Reflection se usa tanto en bibliotecas .NET y de terceros, que "no utilizar la reflexión" significaría "no usar .NET". – Euphoric
Sí, .NET usa la reflexión para hacer todo tipo de cosas. Pero otro de los principios era 'trust .NET y otras bibliotecas para hacer lo que prometen'. Lo cual está bien si te apegas a bibliotecas bien probadas. Deberíamos preocuparnos principalmente por los errores en nuestro propio código. – Joe
Creo que esto se puede decir sobre cualquier pieza de tecnología, no solo Reflection. Mientras sepa lo que está haciendo y conozca sus altibajos, no encontraré una razón para no usarlo. – Euphoric