Python no va a crear mágicamente un objeto contenedor cuando empiezas a asignarle atributos, y si matlab lo permite, consideraría que el matlab está muy roto. Considere esto:
person.name = "Mike"
persom.age = 25
person.sex = "Male"
Ahora tenemos dos objetos, person
y persom
, y person
no tiene age
, y no había ningún indicio de que esto ocurriera. Más tarde intenta imprimir person.age
y, uno esperaría, matlab luego se queja ... dos páginas después del error real.
Una clase se puede usar como contenedor o espacio de nombres. No hay necesidad de crear una instancia, y te ahorrará un poco de tipeo si solo quieres un conjunto de atributos.
class sex:
male = "M"
female = "F"
class person:
name = "Mike"
age = 25
sex = sex.male
Para acceder o modificar cualquiera de estos, se puede utilizar person.name
, etc.
N. B. También utilicé una clase para sex
para ilustrar uno de los beneficios de hacerlo: proporciona consistencia en los valores de los datos (sin recordar si usaste "M" o "Hombre" o "masculino") y capta los errores tipográficos (es decir, Python se quejará) sobre sex.mlae pero no sobre la cadena "mlae" y si más tarde lo compara con "masculino", este último fracasaría).
Por supuesto, aún corre el riesgo de escribir incorrectamente name
, age
, o sex
en este tipo de definición de clase. Entonces, lo que puedes hacer es usar la clase como plantilla y crear una instancia.
class Person:
def __init__(self, name, age=None, sex=None):
self.name, self.age, self.sex = name, age, sex
Ahora, cuando lo hace:
person = Person("Mike", 25, sex.male)
o si desea documentar lo que todos los parámetros son:
person = Person("Mike", age=25, sex=sex.male)
es prácticamente imposible terminar con un objeto que tiene un nombre de atributo mal escrito. Si lo arruinas, Python te dará un mensaje de error en el momento en que cometiste el error. Esa es solo una razón para hacerlo de esta manera.
El enfoque de Matlab tiene muy poco sentido. ¿Por qué querrías hacer algo así en Python? ¿Qué hay de malo en hacer cosas en Python siguiendo las reglas del lenguaje Python? ¿Por qué intentar imponer reglas de un idioma diferente en Python? –
Hola S.Lott, mira mi comentario sobre la respuesta de kindall a continuación. – mikeP
Realmente quieres un diccionario de Python –