¿(Python) Es una mala práctica/costumbre llamar desde __init__ a otros métodos?

Iniciado por theluigy13etv, 13 Mayo 2013, 03:44 AM

0 Miembros y 1 Visitante están viendo este tema.

theluigy13etv

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:


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:


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:


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í:


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?

s00rk

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.