ПРИМЕЧАНИЕ
Модули также можно загружать из внешних источников . Соответствующие примеры встретятся
вам в части II, в которой для завершения работы над проектами мы будем использовать внешние
модули .
УПРАЖНЕНИЯ
9-13 . Переработка с OrderedDict Rewrite: начните с упражнения 6-4 (с . 113), в котором
стандартный словарь используется для представления глоссария . Перепишите программу
с использованием класса OrderedDict и убедитесь в том, что порядок вывода совпадает
с порядком добавления пар «ключ—значение» в словарь .
9-14 . Кубики: модуль random содержит функции для генерирования случайных чисел раз-
ными способами . Функция randint() возвращает целое число в заданном диапазоне . Следу-
ющий код возвращает число от 1 до 6:
from random import randint
x = randint(1, 6)
Создайте класс Die с одним атрибутом с именем sides, который содержит значение по умол-
чанию 6 . Напишите метод roll_die() для вывода случайного числа от 1 до количества сторон
кубика . Создайте экземпляр, моделирующий 6-гранный кубик, и имитируйте 10 бросков .
Создайте модели 10- и 20-гранного кубика . Имитируйте 10 бросков каждого кубика .
9-15 . Модуль недели: для знакомства со стандартной библиотекой Python отлично подой-
дет сайт Python Module of the Week . Откройте сайт http://pymotw .com/ и просмотрите оглав-
ление . Найдите модуль, который покажется вам интересным, и прочитайте про него или
изучите документацию по модулям collections и random .
184 Глава 9 • Классы
Оформление классов
В стилевом оформлении классов есть несколько моментов, о которых стоит упо-
мянуть отдельно, особенно с усложнением ваших программ.
Имена классов должны записываться в «верблюжьей» схеме: первая буква каждого
слова записывается в верхнем регистре, слова не разделяются пробелами. Имена
экземпляров и модулей записываются в нижнем регистре с разделением слов сим-
волами подчеркивания.
Каждый класс должен иметь строку документации, следующую сразу же за опреде-
лением класса. Строка документации должна содержать краткое описание того, что
делает класс, и в ней должны соблюдаться те же соглашения по форматированию,
которые вы использовали при написании строк документации в функциях. Каждый
модуль также должен содержать строку документации с описанием возможных
применений классов в модуле.
Пустые строки могут использоваться для структурирования кода, но злоупотреб-
лять ими не стоит. В классах можно разделять методы одной пустой строкой,
а в модулях для разделения классов можно использовать две пустые строки.
Если вам потребуется импортировать модуль из стандартной библиотеки и модуль
из библиотеки, написанной вами, начните с команды
import
для модуля стандарт-
ной библиотеки. Затем добавьте пустую строку и команду
import
для модуля,
написанного вами. В программах с несколькими командами
import
выполнение
этого соглашения поможет понять, откуда берутся разные модули, использованные
в программе.
Итоги
В этой главе вы узнали, как написать собственные классы. Вы научились хра-
нить информацию в классе с использованием атрибутов и наделять свои классы
нужным поведением. Вы узнали, как написать методы
__init__()
для создания
экземпляров ваших классов с нужными значениями атрибутов и как изменять
атрибуты экземпляров напрямую и через методы. Также было показано, что
наследование может упростить создание логически связанных классов и что эк-
земпляры одного класса могут использоваться как атрибуты другого класса для
упрощения кода классов.
Вы узнали, что хранение классов в модулях и импортирование необходимых
классов в файлы, где они будут использоваться, улучшает организацию про-
ектов. Вы познакомились со стандартной библиотекой Python и рассмотрели
пример, основанный на классе
OrderedDict
из модуля
collections
. Наконец, вы
научились оформлять свои классы с использованием общепринятых соглашений
Python.
В главе 10 вы научитесь работать с файлами и сохранять результаты работы, вы-
полненной в программе. Также будут рассмотрены исключения — экземпляры
специального класса Python, предназначенного для передачи информации о воз-
никающих ошибках.
10
Файлы и исключения
Вы уже овладели основными навыками, необходимыми для создания хорошо
структурированных и удобных в использовании программ; теперь пора подумать
о том, как сделать ваши программы еще более удобными и полезными. В этой главе
вы научитесь работать с файлами, чтобы ваши программы могли быстро анализи-
ровать большие объемы данных.
В этой главе вы научитесь обрабатывать ошибки, чтобы возникновение аномальных
ситуаций не приводило к аварийному завершению ваших программ. Мы рассмо-
трим исключения — специальные объекты, которые создаются для управления
ошибками, возникающими во время выполнения программ Python. Также будет
описан модуль
json
, позволяющий сохранять пользовательские данные, чтобы они
не терялись при завершении работы программы.
Работа с файлами и сохранение данных упрощают использование ваших программ.
Пользователь сам выбирает, какие данные и когда нужно вводить. Он может за-
пустить вашу программу, выполнить некоторую работу, потом закрыть программу
и позднее продолжить работу с того момента, на котором он прервался. Умение об-
рабатывать исключения поможет справиться с такими ситуациями, как отсутствие
нужных файлов, а также с другими проблемами, приводящими к сбою программ.
Обработка исключений повысит устойчивость ваших программ при работе с не-
корректными данными — появившимися как из-за случайных ошибок, так и из-за
злонамеренных попыток взлома ваших программ. Материал, представленный
в этой главе, сделает ваши программы более практичными, удобными и надежными.
Чтение из файла
Гигантские объемы данных доступны в текстовых файлах. В них могут храниться
погодные данные, социально-экономическая информация, литературные произ-
ведения и многое другое. Чтение из файла особенно актуально для приложений,
предназначенных для анализа данных, но оно также может пригодиться в любой
ситуации, требующей анализа или изменения информации, хранящейся в фай-
ле. Например, программа может читать содержимое текстового файла и пере-
писывать его с форматированием, рассчитанным на отображение информации
в браузере.
Работа с информацией в текстовом файле начинается с чтения данных в память.
Вы можете прочитать все содержимое файла или же читать данные по строкам.
186 Глава 10 • Файлы и исключения
Чтение всего файла
Для начала нам понадобится файл с несколькими строками текста. Пусть это будет
файл с числом «пи» с точностью до 30 знаков, по 10 знаков на строку:
Достарыңызбен бөлісу: |