2012-02-24 2 views
0

IM, называя их по ключу массива, потому что, если я знал, что они были названы я мог найти ответ сам = -)создание питона ключ массивы

нормально, например:

parser = OptionParser(conflict_handler="resolve") 
parser.add_option("-x", dest="var_x", help="") 
parser.add_option("-y", dest="var_y", help="") 


(options, args) = parser.parse_args() 

генерирует объект параметра, который может быть использован, как это:

foobar = options.var_x 

что же это называется и где бы я найти документацию о том, как создавать и использовать их?

ответ

1

Один ПОСС является обертывание словаря в объекте смотрите ниже для определения класса:

class Struct: 
def __init__(self, **entries): 
    self.__dict__.update(entries) 

Тогда просто использовать словарь в такой конструктор:

adictionary = {'dest':'ination', 'bla':2} 
options = Struct(**adictionary) 
options.dest 
options.bla 

options.dest вернет 'ination'

options.bla возвратит 2

2

Один класс, который делает что-то очень похожее есть namedtuple:

In [1]: from collections import namedtuple 

In [2]: Point = namedtuple('Point', ['x', 'y']) 

In [4]: p = Point(1, 2) 

In [5]: p.x 
Out[5]: 1 

In [6]: p.y 
Out[6]: 2 
1

Если вы help(options) в интерактивном терминале, вы увидите это optparse.Values экземпляра. На самом деле это не предназначено для создания собственных вещей.

Использование доступа атрибутов для пар ключ-значение обычно глупо. Большую часть времени люди, которые настаивают на этом, должны просто использовать дикт.

Основной встроенный способ сделать что-то в этом направлении - collections.namedtuple.

Смежные вопросы