Python non sarà magicamente creare un oggetto contenitore quando si inizia ad assegnare attributi ad esso, e se Matlab lo consente, considererei il MATLAB malamente rotto. Considerate questo:
person.name = "Mike"
persom.age = 25
person.sex = "Male"
Ora abbiamo due oggetti, person
e persom
, e person
non ha age
, e non c'era alcun indizio che questo è accaduto. Più tardi provi a stampare person.age
e, si spera, Matlab si lamenti poi ... due pagine dopo l'errore vero e proprio.
Una classe può essere utilizzata come contenitore o spazio dei nomi. Non c'è bisogno di istanziarlo, e ti farà risparmiare un po 'di battitura se vuoi solo un fascio di attributi.
class sex:
male = "M"
female = "F"
class person:
name = "Mike"
age = 25
sex = sex.male
Per accedere o modificare uno di questi, è possibile utilizzare person.name
, ecc
N.B. Ho usato una classe per sex
e per illustrare uno dei vantaggi di farlo: fornisce coerenza nei valori dei dati (senza ricordare se hai usato "M" o "Male" o "male") e cattura errori di battitura (cioè Python si lamenterà a proposito di sex.mlae ma non della stringa "mlae" e se in seguito la si verificava con "maschio", quest'ultimo fallirebbe).
Naturalmente, si corre ancora il rischio di errore ortografico name
, age
o sex
in questo tipo di definizione di classe. Quindi quello che puoi fare è usare la classe come modello e creare un'istanza.
class Person:
def __init__(self, name, age=None, sex=None):
self.name, self.age, self.sex = name, age, sex
Ora, quando lo fai:
person = Person("Mike", 25, sex.male)
o se si desidera documentare ciò che tutti questi parametri sono:
person = Person("Mike", age=25, sex=sex.male)
è praticamente impossibile da finire con un oggetto che ha un nome di attributo errato. Se lo incasini, Python ti darà un messaggio di errore nel punto in cui hai commesso l'errore. Questa è solo una ragione per farlo in questo modo.
L'approccio di Matlab ha molto poco senso. Perché vorresti fare qualcosa del genere in Python? Cosa c'è di sbagliato nel fare cose in Python seguendo le regole del linguaggio Python? Perché provare ad imporre le regole di una lingua diversa su Python? –
Ciao S.Lott, guarda il mio commento sulla risposta di kindall qui sotto. – mikeP
Vuoi davvero un dizionario python –