Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: HastatusXXI en 24 Enero 2018, 16:00 pm



Título: Duda: reemplazar sobrecarga de métodos
Publicado por: HastatusXXI en 24 Enero 2018, 16:00 pm
Hola.

He hecho una clase para la estructura de datos Trie en Python y tengo un método recursivo que se llama addWord que tiene como argumentos la palabra que se quiere introducir, la subpalabra que se ha generado hasta el momento en cada llamada y el nodo actual. Me gustaría que el usuario pudiera utilizar el método con un solo argumento (la palabra a introducir), ya que los otros dos son consecuencia del algoritmo y la recursividad, de modo que el usuario no necesita conocerlos. En Java, por ejemplo, utilizaría la sobrecarga de métodos y el método addWord que he descrito sería privado y crearía otro con el mismo nombre, público y con la palabra a añadir como único argumento (creo que es el enfoque correcto, corregidme si me equivoco) ¿Hay alguna forma de hacer algo parecido en Python? ¿Cómo se procede en estos casos con este lenguaje?

(La solución obvia sería crear otro método en la clase con el argumento palabra y un nombre diferente, pero me gustaría saber si hay otro modo).


Título: Re: Duda: reemplazar sobrecarga de métodos
Publicado por: Serapis en 24 Enero 2018, 20:59 pm
Cuando un método ha de ser público y otro privado, carece de sentido sobrecargar un método, dale al privado el nombre que te dé la gana y listo...

La sobrecarga sólo tiene sentido, cuando todos esos métodos son públicos y por tanto se permite al que use la librería elegir la sobrecarga que mejor le vaya  ...en cada ocasión... Si un método es privado, entonces el usuario que lo use, "ni fú ni fá", no tiene acceso, no lo ve, no puede elegir, carece de sentido que sea una sobrecarga.

Si tu método público se llama AddWord, el privado podría llamarse AddWord0, AddWordPriv, AddWordX, etc...


Título: Re: Duda: reemplazar sobrecarga de métodos
Publicado por: HastatusXXI en 25 Enero 2018, 17:43 pm
Cuando un método ha de ser público y otro privado, carece de sentido sobrecargar un método, dale al privado el nombre que te dé la gana y listo...

La sobrecarga sólo tiene sentido, cuando todos esos métodos son públicos y por tanto se permite al que use la librería elegir la sobrecarga que mejor le vaya  ...en cada ocasión... Si un método es privado, entonces el usuario que lo use, "ni fú ni fá", no tiene acceso, no lo ve, no puede elegir, carece de sentido que sea una sobrecarga.

Si tu método público se llama AddWord, el privado podría llamarse AddWord0, AddWordPriv, AddWordX, etc...

Entendido. Gracias por la aclaración.