Я хотел бы создать тривиальный одноразовый объект Python для хранения некоторых параметров командной строки. Я хотел бы сделать что-то вроде этого:Что такое простой способ создания тривиального одноразового объекта Python?
options = ??????
options.VERBOSE = True
options.IGNORE_WARNINGS = False
# Then, elsewhere in the code...
if options.VERBOSE:
...
Конечно, я мог бы использовать словарь, но options.VERBOSE
является более удобным для чтения и проще набрать, чем options['VERBOSE']
.
Я подумал, что я должен быть в состоянии сделать
options = object()
, поскольку object
является базовым типом для всех объектов класса и, следовательно, должно быть что-то вроде класса без каких-либо атрибутов. Но это не работает, так как объект, созданный с использованием object()
не имеет __dict__
члена, и поэтому никто не может добавить атрибуты к нему:
options.VERBOSE = True
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'VERBOSE'
Что является самым простым «вещий» способ создать объект, который может использоваться таким образом, предпочтительно без необходимости создания дополнительного вспомогательного класса?
я не был осведомлен о `namedtuple` класса так что спасибо за ссылки. Но мне нужен изменяемый объект (полезный, например, при обработке командной строки). Кроме того, инициализация экземпляра `namedtuple` на самом деле не является полностью доступной для чтения при использовании для этой цели. – mhagger 2008-10-17 12:48:48
Если вы посмотрите в документе namedtuple doc, вы увидите, что существует более ясная опция инициализации (по-прежнему неизменяемая, извините), например: «opt (VERBOSE = True, IGNORE_WARNINGS = False)» – gimel 2008-10-17 13:37:44
Именованные кортежи безупречно круты. См. Эту статью http://www.artima.com/weblogs/viewpostP.jsp?thread=236637, а также этот рецепт, если вы не на Python 2.6 http://code.activestate.com/recipes/500261/ – 2011-06-24 08:03:55