В глубь языка Python


Объединяем все вместе


Последняя строка кода и единственная еще не разобранная — делает всю работу. Но теперь задача совсем проста, так как все, что нам необходимо, уже готово. Все костяшки домино на месте, осталось только толкнуть их.

Пример 2.25. Основная часть apihelper.py

print "\n".join(["%s %s" % (method.ljust(spacing), processFunc(str(getattr(object, method).__doc__))) for method in methodList])

Обратите внимание, что это одна команда разбитая на несколько строк без явного использования признака продолжения (“\”). Помните, я говорил, что без использования обратного слэша? Расширенная запись списков — один из таких случаев, так как все выражение заключено в квадратные скобки.

Давайте разберем его с конца. Фраза

for method in methodList

говорит о том, ято мы имеем дело с . Как вы уже знаете, methodList является списком объекта object. Таким образом мы пробегаем по списку методов и каждый метод доступен через переменную method.

Пример 2.26. Динамическое извлечение строки документации

>>> import odbchelper >>> object = odbchelper

1

>>> method = 'buildConnectionString'

2

>>> getattr(object, method)

3

<function buildConnectionString at 010D6D74> >>> print getattr(object, method).__doc__

4

Создает и возвращает строку соединения из словаря параметров.

В функцию help object — объект, для которого мы хотим получить помощь — передается в качестве аргумента.
По ходу того, как мы пробегаем по списку methodList, method содержит имя текущего метода.
С помощью функции мы получаем сам метод method объекта object.
Теперь осталось самое простое — распечатать строку документации метода.

Следующий кирпичик — использование функции str. Как вы уже знаете, str — встроенная функция, . Но строка документации уже является строкой, так зачем же суетиться с использованием функции str? На самом деле не каждая функция имеет строку документации, и если строки документации нет, ее атрибут __doc__ равен None.

Пример 2.27. Зачем использовать str для строк документации?




Начало    Вперед



Книжный магазин