elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿(Python) Es una mala práctica/costumbre llamar desde __init__ a otros métodos?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿(Python) Es una mala práctica/costumbre llamar desde __init__ a otros métodos?  (Leído 3,596 veces)
theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
¿(Python) Es una mala práctica/costumbre llamar desde __init__ a otros métodos?
« en: 13 Mayo 2013, 03:44 am »

Hola, espero que me puedan orientar, estos días estoy practicando el lenguaje de programación Python (recién lo estoy aprendiendo) , tengo algunos conocimientos de Java y estoy tratando de aplicar esos conocimientos hacia Python. Tengo la siguiente duda, quiero saber si es que en Python, desde el método __init__ de alguna clase, es posible realizar llamadas a otros métodos de la misma clase  :P .

En Java, por ejemplo al declarar una clase persona, en un principio yo accedía directamente a los atributos de la clase para inicializarlos desde dentro del constructor, de la siguiente manera:

Código:
public class Persona {
    private String nombre;
    private int edad;
    
    public Persona(String nombre, int edad) {        
        this.nombre = nombre;
        this.edad = edad        
    }
    
    public String getNombre() {
        return nombre;
    }
    
    public int getEdad() {
        return edad;
    }        
      
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
    public void setEdad(int edad) {
        this.edad = edad;
    }
}

Pero luego, me acostumbré a llamar a los métodos set desde dentro del constructor (para que estos se encarguen de la inicialización) como muestro a continuación:

Código:
public class Persona {
    private String nombre;
    private int edad;
    
    public Persona(String nombre, int edad) {        
        setNombre(nombre);
        setEdad(edad);        
    }
    
    public String getNombre() {
        return nombre;
    }
    
    public int getEdad() {
        return edad;
    }        
      
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
    public void setEdad(int edad) {
        this.edad = edad;
    }
}

Bueno, intenté hacer lo mismo en Python. En ese nuevo lenguaje me sale de la primera forma:

Código:
class Persona:
    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad

    def getNombre(self):
        return self.nombre

    def getEdad(self):
        return self.edad

    def setNombre(self, nombre):
        self.nombre = nombre

    def setEdad(self, edad):
        self.edad = edad

Y de la segunda forma lo hago así:

Código:
class Persona:
    def __init__(self, nombre, edad):
        self.setNombre(nombre)
        self.setEdad(edad)

    def getNombre(self):
        return self.nombre

    def getEdad(self):
        return self.edad

    def setNombre(self, nombre):
        self.nombre = nombre

    def setEdad(self, edad):
        self.edad = edad

Mi pregunta era si es que está bien eso que estoy haciendo, osea, llamar a los métodos set desde dentro del constructor de la clase (La segunda forma) . ¿Creen que sea una mala práctica?


« Última modificación: 13 Mayo 2013, 03:47 am por theluigy13etv » En línea

s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: ¿(Python) Es una mala práctica/costumbre llamar desde __init__ a otros métodos?
« Respuesta #1 en: 13 Mayo 2013, 20:43 pm »

Yo personalmente si lo haria de esa forma, ya que asi siempre para asignar variables sera de la misma forma y si hay un error siplemente tendrias que ir a checar ahi en tu funcion del set o del get.



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines