Re: Rendimiento de métodos vacíos

Chema Cortes pych3m4 en gmail.com
Mie Jul 26 01:04:22 CEST 2006


El 25/07/06, Oscar Curero<oscar-listas en naiandei.net> escribió:

> En un proyecto que estoy haciendo, tengo la casuística de tener que definir un
> conjunto de clases que externamente serán iguales (tendrán los mismos
> métodos) pero que se comportarán de manera distinta. _Para facilitar la
> lectura del código_, he pensado que todas las clases estén definidas de la
> misma forma. Esto comporta que haya métodos vacíos:
>
> def miMetodo(self,arg):
>         pass
>
> O métodos que sean tontos:
>
> def otroMetodo(self,arg):
>         return 0
>
> Mi pregunta es: ¿Definir este tipo de métodos reduce el rendimiento general?

No notarás ningún problema con el rendimiento.

Lo que quieres hacer es bastante común en programación orientada a
objetos. Es un "patrón" que algunos lenguajes llaman crear un
"interface", para lo que cuentan con sintaxis propia para realizar
estos interfaces.

En python (y otros lenguajes con herencia múltiple) lo que se suele
hacer es crear una "superclase" definiendo el interface, y hacer que
el resto de clases deriven de esta superclase. Cada subclase puede, si
lo desea, especializar el interface según sea conveniente, suplantando
aquellos métodos que necesite.

Se puede ir más lejos y crear un "supertipo" y utilizar "metaclases",
pero, sin saber de qué va tu proyecto, puede que complicara demasiado
las cosas.




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