• Viernes 19 de Abril de 2024, 01:20

Autor Tema:  Constructores en Python  (Leído 6189 veces)

cristiantorres

  • Nuevo Miembro
  • *
  • Mensajes: 22
  • Nacionalidad: sv
  • Bendiciones para todos
    • Ver Perfil
    • Blog dedicado a la programacion
Constructores en Python
« en: Miércoles 11 de Abril de 2012, 00:17 »
0
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: [Seleccionar]
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();

}
}

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.
Visita mi Blog C#, Asp.Net, Python y mas...
Blog Cristian Torres
Foro Codemania

Demenus

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re:Constructores en Python
« Respuesta #1 en: Miércoles 11 de Abril de 2012, 00:58 »
0
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
  1. class Cons:
  2.     def __init__(self, a=None, b=None, c=None):
  3.         self.a, self.b, self.c = a, b, c
  4.         if a:
  5.             print("Se recibió un entero con valor",a)
  6.         elif b:
  7.             print("Se recibió un double con valor",b)
  8.         elif c:
  9.             print("Se recibió una string con valor",c)
  10.         else:
  11.             print("Constructor sin parámetros")
  12.  

O también podrías usar la función isinstance que viene incluida en la biblioteca standard de python

Código: Python
  1. class Cons:
  2.     def __init__(self, param):
  3.         self.param = param
  4.         if isinstance(param, int):
  5.             print("Se recibió un entero con valor",param)
  6.         elif isinstance(param, float):
  7.             print("Se recibió un double con valor",param)
  8.         elif isinstance(param, str):
  9.             print("Se recibió una string con valor",param)
  10.         else:
  11.             print("Constructor sin parámetros")
  12.  

La verdad es que para estas cosas de la sobrecarga Python no se ve tan bonito como para otras jajaja
Espero haberte ayudado

cristiantorres

  • Nuevo Miembro
  • *
  • Mensajes: 22
  • Nacionalidad: sv
  • Bendiciones para todos
    • Ver Perfil
    • Blog dedicado a la programacion
Re:Constructores en Python
« Respuesta #2 en: Miércoles 11 de Abril de 2012, 02:14 »
0
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
  1. class Cons:
  2.     def __init__(self, a=None, b=None, c=None):
  3.         self.a, self.b, self.c = a, b, c
  4.         if a:
  5.             print(" ",a)
  6.         elif b:
  7.             print("Se recibió un double con valor",b)
  8.         elif c:
  9.             print("Se recibió una string con valor",c)
  10.         else:
  11.             print("Constructor sin parámetros")
  12.  

O también podrías usar la función isinstance que viene incluida en la biblioteca standard de python

Código: Python
  1. class Cons:
  2.     def __init__(self, param):
  3.         self.param = param
  4.         if isinstance(param, int):
  5.             print("Se recibió un entero con valor",param)
  6.         elif isinstance(param, float):
  7.             print("Se recibió un double con valor",param)
  8.         elif isinstance(param, str):
  9.             print("Se recibió una string con valor",param)
  10.         else:
  11.             print("Constructor sin parámetros")
  12.  

La verdad es que para estas cosas de la sobrecarga Python no se ve tan bonito como para otras jajaja
Espero haberte ayudado

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
« última modificación: Miércoles 11 de Abril de 2012, 02:19 por cristiantorres »
Visita mi Blog C#, Asp.Net, Python y mas...
Blog Cristian Torres
Foro Codemania