¿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): ...
2 respuestas
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.
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)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.