Форум сайта python.su
Привет,
В своем скрипте хочу использовать OptionParser из модуля optparse
по независящим от меня причинам, могу использовать только python2.4, с версией optparse 1.5a2
В этой версии еще нет возможности указать атрибут epilog (который будет в справке выводиться после списка опций), а мне он ну очень нужен. Поэтому решил, что правильно будет сделать свой класс OptionParserRawEpilog наследующий OptionParser и переопределить в нем метод format_help
Должно получится что-то типа такого
from optparse import OptionParser
class OptionParserRawEpilog(OptionParser):
#догадываюсь, что здесь чего-то не хватает
def format_help(self, formatter=None):
if formatter is None:
formatter = self.formatter
result = []
if self.usage:
result.append(self.get_usage() + "\n")
if self.description:
result.append(self.format_description(formatter) + "\n")
result.append(self.format_option_help(formatter) + "\n")
if self.epilog:
result.append(self.epilog + "\n")
return "".join(result)
#.....
usage= "usage info"
description = "description of script"
epilog = "epilog - examples of usage, additional info, etc.)"
parser = OptionParserRawEpilog(usage=usage, description=description, epilog=epilog)
#.....
Отредактировано (Окт. 28, 2010 22:50:13)
Офлайн
Нужно переопределить __init__ метод класса и добавить атрибут epilog
from optparse import OptionParser
class OptionParserRawEpilog(OptionParser):
#Переопределяем конструктор класа добавляя новый вхдной параметр
def __init__(self, переменные класа OptionParser +, epilog=None)
#Вызываем конструктор родительского класса что-бы были родные переменные
OptionParser.__init__(self, переменные класа OptionParser)
self.epilog = epilog #Добавляем атрибут эпилог
def format_help(self, formatter=None):
...
Отредактировано (Окт. 29, 2010 00:21:27)
Офлайн
Спасибо, все верно, отлично работает.
Получилось так
from optparse import OptionParser, Option
class OptionParserRawEpilog(OptionParser):
def __init__(self,
usage=None,
option_list=None,
option_class=Option,
version=None,
conflict_handler="error",
description=None,
formatter=None,
add_help_option=True,
prog=None,
epilog=None):
OptionParser.__init__(self, usage, option_list, option_class, version,
conflict_handler, description, formatter, add_help_option, prog)
self.epilog = epilog
def format_help(self, formatter=None):
if formatter is None:
formatter = self.formatter
result = []
if self.usage:
result.append(self.get_usage() + "\n")
if self.description:
result.append(self.format_description(formatter) + "\n")
result.append(self.format_option_help(formatter) + "\n")
if self.epilog:
result.append(self.epilog + "\n")
return "".join(result)
Офлайн