Clase con atributos e instancias o if, elif, elif....

Iniciado por PUAROT, 19 Febrero 2017, 12:40 PM

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

PUAROT

Estoy empezando un nuevo script en Python3,5 y como soy novato, me surgen dudas sobre como es mejor hacer las cosas.
Hay muchas formas de llegar a un mismo resultado en Python, pero me gustaría saber como es mas "adecuado" hacerlo.

Por ejemplo, estoy empezando un script el cual me averigüe el valor de una resistencia  a partir de sus colores (ya se que habrá miles hechos) y se me ocurren varias formas de hacerlo.

La primera es crear una clase resistencia
Código (python) [Seleccionar]
class Resistencia():
   def __init__(self,color1=None,color2=None,color3=None,color4=None,color5=None,color6=None):
       self.color1 = color1
       self.color2 = color2
       self.color3 = color3
       self.color4 = color4
       self.color5 = color5
       self.color6 = color6


Con un método del tipo :
Código (python) [Seleccionar]
def valor_color(self,color):
       if color == "negro":
           valor = 0
           multiplicador = 1
           tolerancia = None
       elif color == "marron":
           valor = 1
           multiplicador = 10
           tolerancia = 1
       elif color == "rojo":
           valor = 2
           multiplicador = 10
           tolerancia = 2

y un método que calcule el valor total en base a los colores.....


Por otra parte se me ocurre crear una clase color con sus atributos para luego utilizarlos del tipo :
Código (python) [Seleccionar]
class Color():
   def ___init__(self, valor, multiplicador, tolerancia):
       self.valor = valor
       self.multiplicador = multiplicador
       self.tolerancia = tolerancia


y después instanciar varios objetos color con sus valores
Código (python) [Seleccionar]
negro = Color()
negro.valor = 0
negro.multiplicador = 1
negro.tolerancia = None
marron = Color()
marron.valor = 1
marron.multiplicador = 10
marron.tolerancia = None



Que opináis  ?  Cual sería mejor forma ? alguna otra sugerencia  ?

Espero haberme explicado

tincopasan

más allá de las clases, me gusta trabajar con diccionarios para guardar los datos tipo:
Código (python) [Seleccionar]

resistencias={"negro":{"valor":0,"multiplicador":0,"tolerancia":"None"},
                     "marron":{"valor":1,"multiplicador":10,"tolerancia":1}}

def valores_color(buscado):
    color= resistencias[buscado]
    valor=color["valor"]
    tolerancia= color["tolerancia"]
    print(color)
    print(valor)
    print(tolerancia)
   
valores_color("negro")   

PUAROT

Pues mira yo había pensado también en listas dentro de listas, pero no se me había ocurrido diccionario dentro de diccionario.

Que ventajas tiene con respecto a lista dentro de lista  ?

tincopasan

me parece más facil acceder a un valor por su clave que por su índice, o sea prefiero poner:
diccionario["negro"]
que
lista[0]
al fin y al cabo llegará a lo mismo, pero no hay que saber el lugar que ocupa

PUAROT

Pues si, es verdad :-)

lo mismo lo hago con diccionario , pero creo que investigaré también las clases y atributos, por el hecho de poder reutilizar código en un futuro.