[Python-es] ¿ Injección de código con decoradores o herencia ?

Hernán Foffani hfoffani en gmail.com
Vie Oct 25 17:43:58 CEST 2013


> Y unas dudas colaterales:
> 
> * Por qué tanto setattr(objeto, "atributo", valor)?
>   Si el nombre del atributo ya lo sabemos, para que usar la cadena si 
>   vale con objeto.atributo = valor
> 

En los ejemplos de este hilo es lo mismo.

> * Que tiene de malo el concepto de clase Mixin, que solo existe para 
> complementar a otra clase?
> 

Ninguno de por sí. Es mas, es un patrón perfectamente válido para los
lenguajes de programación que admiten herencia múltiple. Existe desde
hace décadas y en la biblioteca estándar de Python se usa bastante.

Con todo se pueden cometer abusos y mas con Python por la libertad que
permite. El problema mas común es cuando los mixins tienen cantidades
elevadas de métodos. Controlar aquí la resolución de conflictos es
complicado porque suele ser difícil de diagnosticar y mas aún de corregir.

Plone y las primera versión de Zope contribuyeron a su desprestigio,
pero son casos especiales, frameworks gigantes, y aquí sí concuerdo con
la idea que los mixins no son el mecanismo adecuado.

Una regla simplona es que mientras la suma de las cantidades de nombres
a incorporar de todos los mixins no supere la docena estás dentro de la
zona segura.

Saludos,
Hernán.



Más información sobre la lista de distribución Python-es