IIC2233 / Syllabus-2023-1

75 stars 44 forks source link

La mejor forma de iniciar una clase con varios atributos #170

Open SuperFunnyShark1 opened 1 year ago

SuperFunnyShark1 commented 1 year ago

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

En el caso de que quiera crear una clase que disponga de varios atributos, se me ocurren 3 formas:

1: La estandar

    class clase1:
        def __init__(self, nombre, tipo, rareza, costo, suavidad, ubicacion,
                     dificultad):
            self.nombre = nombre
            self.tipo = tipo
            self.rareza = rareza
            self.costo = costo
            self.suavidad = suavidad
            self.ubicacion = ubicacion
            self.dificultad = dificultad

2: Crear una clase que no reciba parámetros, y entregarle los atributos por separado

    class clase2:
        def __init__(self):
            self.nombre = None
            self.tipo = None
            self.rareza = None
            self.costo = None
            self.suavidad = None
            self.ubicacion = None
            self.dificultad = None

      my_class = clase2()

      my_class.nombre = "nombre"
      my_class.tipo = tipo
      ...

3: Entregar una namedtuple cuando instancio un objeto de dicha clase:

    class clase3:
        def __init__(self, tupla: namedtuple):

            self.nombre = tupla["nombre"]
            self.tipo = tupla["tipo"]
            self.rareza = tupla["rareza"]
            self.costo = tupla["costo"]
            self.suavidad = tupla["suavidad"]
            self.ubicacion = tupla["ubicacion"]
            self.dificultad = tupla["dificultad"]

Cuál de estas es la mejor opción ?, hay otra forma más conveniente?

lucasvsj commented 1 year ago

Hola @SuperFunnyShark1 En base a mi experiencia como programador, opino que la mejor forma es la numero 3. Esto se debe a las siguientes razones:

SuperFunnyShark1 commented 1 year ago

Perfecto, gracias!