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

[0] Índice de Mensajes

Ir a la versión completa