¿Cuál es la forma más sencilla de definir una clase con 40 o más variables en Python? Se utiliza Pyhton 3.8 en Windows 10. class ExampleClass: def __init __ (self, val_1, val_2, ..... 40 variables): ...

0
oduncu90 15 ene. 2021 a las 07:51

2 respuestas

La mejor respuesta

Bueno, simplemente escriba sus valores predeterminados en la clase __init__ como de costumbre. Teclearás estos nombres de variables en todo el programa (de lo contrario, ¿por qué están ahí?), Por lo que no será mucho más trabajo hacerlo. A veces, las listas y los diccionarios son mejores opciones, pero no hay forma de que lo sepamos en este caso.

Después de que su actualización muestre 40 variables en __init__, podría permitir cualquier cantidad de variables en init, asegúrese de que cumpla con sus criterios (aquí necesito exactamente 40) y colóquelas en una lista.

class ExampleClass:
    def __init__(self, *vals):
        """Example(val1, ... val40)"""
        if len(vals) != 40:
            raise ValueError(f"Need 40 variables, got {len(vals)}")
        self.vals = list(vals)

   def example_function(self):
       # now using val_1 is 
       print(self.vals[0])

Lo que pasa con las variables llamadas "val_0" a "val_40" es que realmente suena lista. Pero si una lista es una buena idea depende de cómo quiera usarla más adelante. Si realmente desea abordarlos individualmente como somevariable.val_0, etc ... entonces su ejemplo existente es la mejor manera de hacerlo.

2
tdelaney 15 ene. 2021 a las 06:02

Puede hacerlo mediante un nombre subido del módulo integrado collections:

from collections import namedtuple
vars = ["a", "b", "c", "d"]
SimpleClass = namedtuple("SimpleClass", vars)

obj = SimpleClass(a=1, b=2, c=3, d=4)

Incluso si tiene los datos en un diccionario, puede usar doble asterisco para crear un objeto:

data = {"a":1, "b":2, "c":3, "d":4}
obj = SimpleClass(**data)
1
KD6-3.7 15 ene. 2021 a las 05:00
65730682