Dies ist hauptsächlich eine Frage des "guten Python-Stils".Gruppenkonstanten in Python
Ich habe ein Modul, das eine Anzahl von Konstanten verwendet, die sich gruppiert fühlen soll.
Lets sagen, wir haben Hunde und Katzen und jeder von ihnen haben die Anzahl der Beine und Lieblingsessen.
Beachten Sie, dass
- wir nichts anderes als diese Konstanten über Hunde modellieren und Katzen
- sehr wahrscheinlich werden wir mehr Tiere in der Zukunft haben.
- Diese Konstanten werden nicht außerhalb des aktuellen Moduls verwendet.
Ich dachte an den folgenden Lösungen:
Konstanten auf Modulebene
DOG_NUMBER_OF_LEGS = 4
DOG_FAVOURITE_FOOD = ["Socks", "Meat"]
CAT_NUMBER_OF_LEGS = 4
CAT_FAVOURITE_FOOD = ["Lasagna", "Fish"]
Sie scheinen nicht wirklich gruppierten, aber ich denke, es ist die Lösung, die ich bevorzuge.
Klassen als Namespaces
class Dog(object):
NUMBER_OF_LEGS = 4
DOG_FAVOURITE_FOOD = ["Socks", "Meat"]
class Cat(object):
NUMBER_OF_LEGS = 4
FAVOURITE_FOOD = ["Lasagna", "Fish"]
ich diese Lösung nicht wie wir Klasse haben werden, die wir verwenden gewohnt und sie können tatsächlich instanziiert werden.
Wörterbuch der Konstanten
ANIMALS_CONFIG = {
"DOG" : {
"NUMBER_OF_LEGS" : 4,
"FAVOURITE_FOOD" : ["Socks", "Meat"]
},
"CAT" : {
"NUMBER_OF_LEGS" : 4,
"FAVOURITE_FOOD" : ["Lasagna", "Fish"]
}
}
Ich dachte auch über Submodule Zugabe, aber ich möchte nicht wirklich diese internen Konstanten belichten
was ist die pythonic Weg mach es/wie würdest du es machen?
Sie auch eine Klasse '' mit Tier: ein Tier dog' haben könnte und 'cat' Instanzen dieser Klasse. – syntonym
Oder Sie könnten auch [named tuples] (https://docs.python.org/2.7/library/collections.html#collections.namedtuple) verwenden. – syntonym
Wie werden Sie sie in Ihrem Code verwenden? Wird iteriert oder ausgewählt? Woher käme der Auswahlparameter? –