Programación Web y Scripting > Python
Constructores en Python
(1/1)
cristiantorres:
Soy programador de C# a un nivel intermedio, pero quiero aprender a programar en python también y recién empiezo a estudiar sobre este lenguaje y me parece interesante hasta me parece un poco mas facil que C#.
Estoy practicando pasando todos mis códigos de cuando empeze a programar en c# a python.
Pero aun no me quedan claros algunos conceptos de python, por ejemplo se que en python no existen los contructores y lo mas que se asemeja a esto es el metodo __init__() y aun no me queda claro como usarlo, por ejemplo quiero pasar este código de c# a python pero aun no lo e logrado ya que se usa el constructor con tipos de datos diferentes y nose como hacerlo en python.
Este es el codigo que quiero pasar a python si me pudieran mas o menos orientar les agradeceria muchisimo
--- Código: ---using System;
class cons {
int a;
double b;
string c;
public cons(int a){
this.a=a;
Console.WriteLine("se recibió un entero con valor: "+a);
}
public cons(double b){
this.b=b;
Console.WriteLine("se recibió un double con valor: "+b);
}
public cons(string c){
this.c=c;
Console.WriteLine("se recibió un String con valor: "+c);
}
public cons(){
Console.WriteLine("constructor vacío sin declaración de parámetros");
}
}
class ejercicio3{
public static void Main(){
cons ob = new cons(10);
cons ob1 = new cons(11.5);
cons ob2 = new cons("madrid");
cons ob3 = new cons();
}
}
--- Fin del código ---
Y otra duda que tengo en python es respecto al método main en c# es necesario definir este metodo para que los programas se ejecuten pero en python veo que no es necesario declarlo y tambien veo que se utiliza de manera diferente.
Demenus:
Bueno en Python si es cierto que no existe la sobrecarga y lo que se usa como solución a ello son los parámetros por defecto
--- Código: Python ---class Cons: def __init__(self, a=None, b=None, c=None): self.a, self.b, self.c = a, b, c if a: print("Se recibió un entero con valor",a) elif b: print("Se recibió un double con valor",b) elif c: print("Se recibió una string con valor",c) else: print("Constructor sin parámetros")
O también podrías usar la función isinstance que viene incluida en la biblioteca standard de python
--- Código: Python ---class Cons: def __init__(self, param): self.param = param if isinstance(param, int): print("Se recibió un entero con valor",param) elif isinstance(param, float): print("Se recibió un double con valor",param) elif isinstance(param, str): print("Se recibió una string con valor",param) else: print("Constructor sin parámetros")
La verdad es que para estas cosas de la sobrecarga Python no se ve tan bonito como para otras jajaja
Espero haberte ayudado
cristiantorres:
--- Cita de: Demenus en Miércoles 11 de Abril de 2012, 00:58 ---Bueno en Python si es cierto que no existe la sobrecarga y lo que se usa como solución a ello son los parámetros por defecto
--- Código: Python ---class Cons: def __init__(self, a=None, b=None, c=None): self.a, self.b, self.c = a, b, c if a: print(" ",a) elif b: print("Se recibió un double con valor",b) elif c: print("Se recibió una string con valor",c) else: print("Constructor sin parámetros")
O también podrías usar la función isinstance que viene incluida en la biblioteca standard de python
--- Código: Python ---class Cons: def __init__(self, param): self.param = param if isinstance(param, int): print("Se recibió un entero con valor",param) elif isinstance(param, float): print("Se recibió un double con valor",param) elif isinstance(param, str): print("Se recibió una string con valor",param) else: print("Constructor sin parámetros")
La verdad es que para estas cosas de la sobrecarga Python no se ve tan bonito como para otras jajaja
Espero haberte ayudado
--- Fin de la cita ---
Gracias por responder
y si tienes razón por lo que e visto hasta ahora python en esto de sobrecargas se queda un poco corto pero = lo seguiré estudiando
Navegación
Ir a la versión completa