Je voudrais créer un objet Python one-off trivial pour contenir des options de ligne de commande. Je voudrais faire quelque chose comme ceci:Qu'est-ce qu'un moyen facile de créer un objet Python one-off trivial?
options = ??????
options.VERBOSE = True
options.IGNORE_WARNINGS = False
# Then, elsewhere in the code...
if options.VERBOSE:
...
Bien sûr, je pourrais utiliser un dictionnaire, mais options.VERBOSE
est plus lisible et plus facile à saisir que options['VERBOSE']
.
Je pensais que je devrais pouvoir faire
options = object()
, puisque object
est le type de base de tous les objets de classe et devrait donc être quelque chose comme une classe sans attributs. Mais cela ne fonctionne pas, car un objet créé à l'aide object()
n'a pas membre __dict__
, et donc on ne peut pas ajouter des attributs à elle:
options.VERBOSE = True
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'VERBOSE'
Quelle est la façon la plus simple « pythonique » pour créer un objet peut être utilisé de cette façon, de préférence sans avoir à créer une classe d'assistance supplémentaire?
Cela semble le plus proche de ce que j'ai demandé tout en n'étant pas terriblement impitoyable. Et la classe 'options' n'a aucun autre attribut susceptible de prêter à confusion. – mhagger
Je pense que mettre VERBOSE dans la définition de classe comme ça est un peu inutile car il le crée comme une variable de classe (pas une variable d'instance) AFAIK – hasen
En fait, c'est le point. La classe est juste utilisée comme espace de noms, de sorte que vous n'avez pas besoin d'instancier quoi que ce soit pour obtenir les valeurs. –