Questa è principalmente una domanda in "stile Python".Costanti di raggruppamento in python
Ho un modulo che utilizza un numero di costanti che dovrebbe essere raggruppato.
Diciamo che abbiamo cani e gatti e ognuno di loro ha il numero di zampe e il cibo preferito.
Nota che
- vogliamo modellare nulla, ma queste costanti su cani e gatti
- molto probabilmente avremo più animali in futuro.
- queste costanti non verranno utilizzate al di fuori del modulo corrente.
ho pensato le seguenti soluzioni:
costanti a livello di modulo
DOG_NUMBER_OF_LEGS = 4
DOG_FAVOURITE_FOOD = ["Socks", "Meat"]
CAT_NUMBER_OF_LEGS = 4
CAT_FAVOURITE_FOOD = ["Lasagna", "Fish"]
Sembrano non proprio raggruppati, ma penso che sia la soluzione che preferisco.
Classi come spazi dei nomi
class Dog(object):
NUMBER_OF_LEGS = 4
DOG_FAVOURITE_FOOD = ["Socks", "Meat"]
class Cat(object):
NUMBER_OF_LEGS = 4
FAVOURITE_FOOD = ["Lasagna", "Fish"]
Non mi piace questa soluzione come avremo classe che non rimarremo uso e possono essere in realtà un'istanza.
Dizionario di costanti
ANIMALS_CONFIG = {
"DOG" : {
"NUMBER_OF_LEGS" : 4,
"FAVOURITE_FOOD" : ["Socks", "Meat"]
},
"CAT" : {
"NUMBER_OF_LEGS" : 4,
"FAVOURITE_FOOD" : ["Lasagna", "Fish"]
}
}
Ho anche pensato di aggiungere moduli, ma io non ci tengo a esporre queste costanti interne
qual è il modo più divinatorio per fallo/come lo faresti?
Si potrebbe anche avere una classe '' Animal' con dog' e 'cat' istanze di quella classe. – syntonym
Oppure puoi anche usare [tuple con nome] (https://docs.python.org/2.7/library/collections.html#collections.namedtuple). – syntonym
Come li userete nel vostro codice? Vuoi iterare o selezionare? Da dove proviene il parametro di selezione? –