Re: Sobrecargar método

Victor Peinado vitojph en gmail.com
Lun Dic 5 11:31:26 CET 2005


¡Hola!

Perdonad el retraso en responder, he estado lejos del ordenador
durante el fin de semana.

El 2/12/05, Batista, Facundo<Facundo.Batista telefonicamoviles.com.ar> escribió:
>
> #- class Cosa:
> #-    def leeDatos(self, datos):
> #-       if isinstance(datos, file):
> #-          print "Datos es un fichero"
> #-          # lee el fichero
> #-       elif isinstance(datos, list):
> #-          print "datos es una lista de elementos"
> #-          # recorre la lista elemento a elemento
>
> A ver. ¿Por qué querés que sea un sólo método?
>
> ¿La información que tenés en la lista es la misma que en el fichero? (por
> ejemplo, en ambos casos lees lineas de texto). Si es así, podés lograr algo
> como (abriendo previamente al archivo con 'file'):

Eso es, los datos que quiero cargar con leeDatos son los mismos,
algunas veces estarán almacenados en un fichero y otras veces se
podrán especificar fácilmente en una lista. Me parece cómodo el hecho
de utilizar el mismo método para cargar los datos independientemente
de su fuente de origen, simplemente eso.


> Ahora, si las formas de acceder son muy distintas, ¿por qué meterlas en el
> mismo método? ¿para que desde afuera se vean con la misma API?
>
> ¿Qué pasaría si desde afuera tenés un leeDatosLista y un leeDatosArch?

Nada me impide hacer dos métodos distintos, efectivamente. Me parece
más cómodo simplificar el API.

> Por otro lado, ¿por qué decis que usar isinstance() no es aconsejable?

He leído un par de artículos desaconsejando su uso. No los tengo a
mano, lo siento, pero Hernán lo ha explicado mejor de lo que yo lo
haría :-)

Saludos.

--
Víctor Peinado || <vitojph /> || http://nlp.uned.es/~victor
¡Ningún investigador sin contrato! http://www.precarios-madrid.org




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