Такого поля у экземпляра А нет!
В этом примере создается класс MyClass, не содержащий, собственно, ничего. На основе этого класса создаются два экземпляра с названиями А и B. Затем командам и А.first = "Экземпляр А", В.sесоnd= "Экземпляр В" и MyClass.total= "Kлacc MyClass" добавляются (с присваиванием значений) поля first для экземпляра А, поле second для экземпляра B и поле total для класса MyClass. В команде print (А.total , " " , А.first ) есть ссылки на поле first экземпляра класса и поле total объекта класса, причем обе ссылки выполняются через экземпляр А.
По результату выполнения команды видим, что проблем с доступом к полям не возникает. В принципе, нечто подобное мы наблюдали в предыдущих примерах, но здесь есть одна особенн6ость. Связана она с тем, что поле total появилось у класса MyClass уже после того, как были созданы экземпляры А и в. Но, тем не менее, доступ к добавленному полю total через экземпляры класса имеется. А вот добавление поля одному экземпляру класса для другого экземпляра "остается незамеченным" (что, в принципе, вполне логично).
При попытке выполнить команду print(А.second) возникает ошибка класса AttributeError: поля second у экземпляра А нет. Эту ситуацию мы обрабатываем с помощью блока try-except. Результатом является сообщение Такого поля у экземпляра А нет!, которое отображается командой print ("Такого поля у экземпляра А нет !") в ехсерt-блоке.
Аналогично обстоят дела с экземпляром B: доступ к полю total класса MyClass и полю second экземпляра через переменную В получаем без проблем, а к полю first экземпляра доступа нет, поскольку это поле добавлялось в экземпляр А, и экземпляр B к данному полю никакого отношения не имеет.
На следующем этапе командой del(MyClass.total) удаляем поле total объекта класса MyClass, после чего командой print(А.total) (в trу-блоке) пытаемся прочитать значение этого поля. Судя по тому, что в этом случае возникает ошибка класса At tributeError (неверный атрибут) и в ехсерt-блоке выполняется команда print ("Такого поля нет!"), поле total действительно удалено из объекта класса MyClass. Нет доступа к удаленному полю total и через переменную B.
Наконец, командой del(A.first) поле first экземпляра А. Как следствие, при попытке выполнить команду print (A . fir s t ) в t rу-блоке возникает ошибка. Поэтому в ехсерt-блоке выполняется команда print ("Такого поля у экземпляра А нет!").
5.4.Практические задания
1.Класс Дробное число со знаком (Fractions). Число должно быть представлено двумя полями: целая часть – длинное целое со знаком, дробная часть –беззнаковое короткое целое. Реализовать арифметические операции
55
сложения, вычитания, умножения и операции сравнения. В функции main проверить эти методы.
2.Класс Деньги для работы с денежными суммами. Число должно быть представлено двумя полями: типа long для рублей и типа unsigned char – для копеек. Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой. Реализовать сложение, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число и операции сравнения.
Вфункции main проверить эти методы.
3.Класс Равнобочная трапеция, члены класса: координаты 4-х точек. Предусмотреть в классе конструктор и методы: проверка, является ли фигура равнобочной трапецией; вычисления и вывода сведений о фигуре: длины сторон, периметр, площадь. В функции main продемонстрировать работу с классом: дано N трапеций, найти количество трапеций, у которых площадь больше средней площади.
1.Что такое класс в Python?
2.Что такое Объекты в Python?
3.Что такое Инкапсуляция в Python?
4.Что такое Интерфейсы в Python?
5.Что такое Полиморфизм в Python?
В учебном пособии описан базовый синтаксис языка Python: типы данных, операторы, условия, циклы, регулярные выражения, встроенные функции, объектно-ориентированное программирование, обработка исключений, часто используемые модули стандартной библиотеки и установка дополнительных модулей с помощью утилиты pip. Даны основы SQLite, описан интерфейс доступа к базам данных SQLite и MySQL, рассказано об использовании ODBC для доступа к данным. Рассмотрена работа с изображениями с помощью библиотек Pillow и Wand, получение данных из Интернета, разработка оконных приложений с помощью библиотеки Tkinter, параллельное программирование и работа с архивными файлами различных форматов. Пособие содержит множество практических примеров, помогающих начать программировать на языке Python самостоятельно. Весь материал тщательно подобран, хорошо структурирован и компактно изложен, что позволяет использовать пособие как удобный справочник.
Предоставленный материал, как считают авторы, вполне способен, опираясь на знания, полученные в рамках бакалавриата и систематизируя их, дать минимально необходимый запас для начала работы в такой интересной сфере деятельности, как разработка приложений на языке Python.
56
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1.Коэльё, Л.П., Ричерт, В. Построение систем машинного обучения на языке Python / Л.П. Коэльё, В. Ричерт; пер. с англ. – М.: ДМК Пресс, 2015.
2.Маккинли, У. Python и анализ данных / У. Маккинли; пер. с англ. – М.: ДМК Пресс, 2015. – 482 с.
3.Саммерфилд, М. Python на практике / М. Саммерфилд; пер. с англ. – М.: ДМК Пресс, 2014. – 338 с.
4.Лутц, М. Программирование на Python / М. Лутц; пер. с англ. – 4-е изд.
–Т. II. – СПб.: Символ-Плюс, 2011.
5.Лутц, М. Программирование на Python / М. Лутц; пер. с англ. – 4-е изд. – Т. I. – СПб.: Символ-Плюс, 2011. – 992 с.
6.Лутц, М. Изучаем Python / М. Лутц; пер. с англ. – 4-е изд. – СПб.: Символ-Плюс, 2010. – 1280 с.
7.Бизли, Дэвид М. Python. Подробный справочник / Дэвид М. Бизли; пер. с англ. – 4-е изд. – СПб.: Символ-Плюс, 2010. – 864 с.
8.Саммерфилд, М. Программирование на Python 3. Подробное руководство / М. Саммерфилд; пер. с англ. – СПб.: Символ-Плюс, 2009. – 608 с.
9.Гифт, Ноа, Джонс, Джереми М. Python в системном администрировании UNIX и Linux / Ноа Гифт, Джереми М. Джонс; пер. с англ. – СПб.: Символ-Плюс, 2009. – 512 с.
10.Бизли, Дэвид М. Язык программирования Python. Справочник / Дэвид М. Бизли. – К.: ДиаСофт, 2000. – 336 с.
11.Сузи, Р.А. Python. Наиболее полное руководство (+CD) / Р. А. Сузи. –
СПб.: БХВ-Петербург, 2002. – 768 с.
12. Сузи, Р.А. Язык программирования Python: учебное пособие / Р. А. Сузи. – М.: ИНТУИТ, БИНОМ. Лаборатория знаний, 2006. – 328 с.
13.Доусон, М. Программируем на Python / М. Доусон. – СПб.: Питер, 2012. – 432 с.
14.Шапошникова, С. Основы программирования на Python. Учебник. Вводный курс / С. Шапошникова. – версия 2. – 2011. – 44 с.
15.Хахаев, И.А. Практикум по алгоритмизации и программированию на Python: учебник / И.А. Хахаев. – М.: Альт Линукс, 2010. – 126 с.
16.Фёдоров, Д.Ю. Основы программирования на примере языка Python: учебное пособие / Д.Ю. Фёдоров. – СПб.: Юрайт, 2018. – 167 с.
17.Чаплыгин, А.Н. Учимся программировать вместе с Питоном: учебник
/А.Н. Чаплыгин. – 135 с.
18.Бизли, Д., Ван Россум, Гвидо. Python: основные ссылки / Д. Бизли,
Гвидо Ван Россум. – New Riders Publishing, 1999.
19.Мартин С. Браун. Python: полный справочник / С. Мартин. – McGrawHill Professional Publishing, 2001.
20.Дж. Чун, Уэсли. Базовое программирование на Python / Уэсли Дж. Чун. – Прентис Холл ПТР, 2000.
57
21.Голд, А. Научитесь программировать с помощью Python: учебное пособие для любителей, начинающих и тех, кто хочет научиться искусству программирования / А. Голд. – Аддисон-Уэсли Профессионал, 2001.
22.Грейсон, Д. Э. Программирование на Python и Tkinter / Д.Э. Грейсон.
–Компания Manning Publications, 1999.
23.Гупта, Р. Использование Python / Р. Гупта. – Wiley, 2002
24.Хаммонд, М., Робинсон, Э. Программирование на Python на Win32 / М. Хаммонд, Э. Робинсон. – О'Рейли, 2000.
25.Джонс, К.А., Дрейк, Ф.Л. Python & XML / К.А. Джонс, Ф.Л. Дрейк. –
O’Reilly & Associates, 2001.
26.Ланингем, И.В.. Учите себя Python за 24 часа / И.В. Ланингем. – Самс,
2000.
27.Латтайер, А., Пеллетье, М. Книга Zope / А. Латтайер, М. Пеллетье.
Издательство New Riders, 2001.
28.Лунд, Ф. Стандартная библиотека Python / Ф. Лунд. – O’Reilly & Associates, 2001.
29.Суигарт, А. Придумай свои собственные компьютерные игры с Python / А. Суигарт. – 2008-2010. – 436 с.
30.Суигарт, А. Базовое программирование приложений Python / А.
Суигарт. - 2012. - 888 с.
58
ОГЛАВЛЕНИЕ |
|
ВВЕДЕНИЕ................................................................................................................ |
3 |
1. ЗНАКОМСТВО С ЯЗЫКОМ PYTHON .............................................................. |
3 |
1.1. Почему Python ................................................................................................. |
3 |
1.2. Практические задания..................................................................................... |
7 |
Вопросы для самопроверки................................................................................... |
7 |
2. ТИПЫ ДАННЫХ................................................................................................... |
7 |
2.1. Базовые типы данных в языке Python ........................................................... |
7 |
2.1.1. |
8Ошиб |
Decimal............................................................................................................ |
|
ка! Закладка не определена. |
|
2.1.2. Fraction............................................................................................................ |
8 |
2.1.3. Кортежи......................................................................................................... |
9 |
2.1.4. Словари ....................................................................................................... |
10 |
2.1.5. Множества .................................................................................................. |
12 |
2.1.6. Frozenset ...................................................................................................... |
14 |
2.1.7. Файлы.......................................................................................................... |
15 |
2.1.8. Генераторы.................................................................................................. |
17 |
2.2. Практические задания................................................................................... |
17 |
Вопросы для самопроверки................................................................................. |
18 |
3. ФУНКЦИИ........................................................................................................... |
18 |
3.1. Создание функции......................................................................................... |
18 |
3.2. Значения аргументов по умолчанию........................................................... |
20 |
3.3. Рекурсия......................................................................................................... |
23 |
3.4. Лямбда-функции............................................................................................ |
26 |
3.5. Локальные и глобальные переменные........................................................ |
29 |
3.6. Практические задания................................................................................... |
31 |
Вопросы для самопроверки................................................................................. |
31 |
4. ДЕКОРАТОРЫ, ИСКЛЮЧЕНИЯ, ИТЕРАТОРЫ ........................................... |
32 |
4.1. Декораторы.................................................................................................... |
32 |
4.2. Итераторы и генераторы .............................................................................. |
38 |
59