Обратный вызов Optparse не использует аргумент

Я пытаюсь узнать optparse немного лучше, но мне трудно понять, почему следующий код ведет себя именно так. Я делаю что-то глупое?

import optparse

def store_test(option, opt_str, value, parser, args=None, kwargs=None):
    print 'opt_str:', opt_str
    print 'value:', value

op = optparse.OptionParser()
op.add_option('-t', '--test', action='callback', callback=store_test, default='test', 
    dest='test', help='test!')

(opts, args) = op.parse_args(['test.py', '-t', 'foo'])

print
print 'opts:'
print opts
print 'args:'
print args

Вывод:

opt_str: -t
value: None

opts:
{'test': 'test'}
args:
['foo']

Почему 'foo' не передается в store_test () , а вместо этого интерпретируется как дополнительный аргумент? Что-то не так с op.parse_args (['- t', 'foo']) ?

http://codepad.org/vq3cvE13

Изменить:

Вот пример из документации:

def store_value(option, opt_str, value, parser):
    setattr(parser.values, option.dest, value)
[...]
parser.add_option("--foo",
                  action="callback", callback=store_value,
                  type="int", nargs=3, dest="foo")

5
задан Acorn 5 July 2011 в 14:30
поделиться