Главная » Просмотр файлов » Лутц М. - Изучаем Python

Лутц М. - Изучаем Python (1077325), страница 124

Файл №1077325 Лутц М. - Изучаем Python (Лутц М. - Изучаем Python) 124 страницаЛутц М. - Изучаем Python (1077325) страница 1242018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 124)

3. И классы, и экземпляры — это пространства имен (пакеты перемен- ных, которые играют роль атрибутов), Главное различие между ними состоит в том, что классы представляют собой своего рода фабрики, позволяющие производить множество экземпляров. Кроме того, классы поддерживают методы перегрузки операторов, которые наследуются экземплярами, а функции, вложенные в классы, интерпретируются как специальные методы обработки экземпляров.

4. Первый аргумент в методах классов играет особую роль, так как че- рез него всегда передается ссылка на объект экземпляра, который подразумевается при вьюове метода. Согласно общепринятым соглатпениям он обычно называется ве1т. Так как по умолчанию методы всегда принимают этот подразумеваемый объект, мы говорим, что они яобъектно-ориентированныея, то есть предназначенные для обработки или изменения объектов. б. Если метод )я)т присутствует в классе или наследуется им, ин- терпретатор автоматически будет вызывать его при создании каждого экземпляра этого класса. Этот метод также называют конструктором — он неявно получает новый экземпляр, а также все аргументы, которые были указаны при вызове имени класса.

Кроме того, он является типичным представителем методов перегрузки операторов. В отсутствии метода )л11 экземпляры начинают свое существование как пустые пространства имен. 6. Экземпляр класса создается вызовом имени класса, как если бы это была функция — любые аргументы в вызове будут переданы конструктору 1л!т, как второй и следующие аргументы. Новый экземпляр запоминает, из какого класса он был создан, благодаря чему обеспечивается наследование. 7. Класс создается с помощью инструкции с1звв, так же как определе ния функций.

Эти инструкции обычно выполняются во время импортирования файла вмещающего модуля (подробнее об этом рассказывается в следующей главе). 8. Суперклассы для заданного класса определяются в виде списка в круглых скобках в инструкции с1авэ после имени нового класса. Порядок следования суперклассов в списке определяет порядок поиска в дереве наследования. Основы программирования классов Теперь, когда мы поговорили об ООП в общем, настало время посмотреть, как это выглядит в фактическом программном коде. В этой и следующей главах подробно будет рассказываться о синтаксисе, который составляет основу модели классов в языке РуФЬоп. Коли ранее вам не приходилось сталкиваться с ООП, будет сложно сразу усвоить все сведения о классах. Чтобы облегчить освоение программирования классов, мы начнем наше детальное исследование ООП с того, что рассмотрим в этой главе несколько простых классов в действии.

Классы в языке Ру$йоп в самой простой их форме легко понять, а детали будут рассмотрены подробнее в следующих главах. Классы обладают тремя основными отличительными особенностями. На самом простом уровне они представляют собой всего лишь пространства имен, во многом похожие на модули, которые мы изучали в пятой части книги. Но, в отличие от модулей, классы также поддерживают создание множества объектов, реализуют наследуемое пространство имен и перегрузку операторов.

Начнем наше путешествие с инструкции с1зэз и исследуем каждую из этих трех особенностей. Классы генерируют множество экземпляров объектов Чтобы понять, каким образом обеспечивается возможность создания множества объектов, для начала нужно понять, что в объектно-ориентированной модели языка РуФЬоп существует две разновидности объектов: объекты классов и объекты экземпляров. Объекты классов реализуют поведение по умолчанию и играют роль фабрик по производству объектов экземпляров.

Объекты экземпляров — это настоящие объекты, обрабатываемые программой, — каждый представляет собой самостоятельное пространство имен, но наследует имена (то есть автомати- 578 Глава 23. Основы программирования классов чески имеет доступ к ним) класса, из которого он был создан. Объекты классов создаются инструкциями, а объекты экземпляров — вызовами. Каждый раз, когда вы вызываете класс, вы получаете новый экземпляр этого класса. Эта объектная концепция существенно отличается от любых других программных конструкций, которые мы видели до сих пор в этой книге. В действительности, классы — это фабрики, способные производить множество экземпляров.

В противоположность этому каждый модуль в программе может присутствовать в единственном экземпляре (фактически это одна из причин, почему необходимо использовать функцию ге! озв для обновления объекта модуля, чтобы отразить внесенные в модуль изменения). Ниже приводится краткий обзор основных особенностей ООП в языке Ру$Ьоп. Как вы увидите, классы в языке Рувимов сочетают в себе черты, напоминающие функции и модули, но они совершенно не похожи на классы в других языках программирования.

Объекты классов реализуют поведение по умолчанию Когда выполняется инструкция с1авв, она создает объект класса. Ниже приводятся несколько основных отличительных характеристик классов в языке Ру1йоп. ° Инструкция с1ввв создает объект класса и присваивает ему имя. Так же как и инструкция Оее, инструкция с1авв является выполняемой инструкцией. Когда она выполняется, она создает новый объект класса и присваивает его имени, указанному в заголовке инструкции с1авв.

Кроме того, как и инструкции оег, инструкции с1авв обычно выполняются при первом импортировании содержащих их файлов. ° Операции присваивания внутри инструкции с1авв создают атрибуты класса. Так же как и в модулях, инструкции присваивания на верхнем уровне внутри инструкции с1авв (не вложенные в инструкции лег) создают атрибуты объекта класса. С технической точки зрения инструкция с1авв преобразует свою область видимости в пространство имен атрибутов объекта класса, так же,как глобальная область видимости модуля преобразуется в его пространство имен. После выполнения инструкции с1авв атрибуты класса становятся доступны по их составным (полным) именам: ов)есг. паве. ° Атрибуты класса описывают состояние объекта и его поведение. Атрибуты объекта класса хранят информацию о состоянии и описывают поведение, которым обладают все экземпляры класса, — инструкции пес, вложенные в инструкцию с1авв, создают мелгоды, которые обрабатывают экземпляры.

Классы генерируют множество экземпляров обьектов 579 Объекты экземпляров — это конкретные элементы Когда вызывается объект класса, возвращается объект экземпляра. Ниже приводятся несколько отличительных характеристик экземпляров классов: ° Вызов объекта класса как функции создает новый объект экземпляра. Всякий раз, когда вызывается класс, создается и возвращается новый объект экземпляра.

Экземпляры представляют собой конкретные элементы данных в вашей программе. ° Каждый объект экземпляра наследует атрибуты класса и приобретает свое собственное пространство имен. Объекты экземпляров создаются из классов и представляют собой новые пространства имен; они первоначально пустые, но наследуют атрибуты классов, из которых были созданы. ° Операции присваивания значений атрибутам через ссылку ве11 в методах создают атрибуты в каждом отдельном экземпляре. Методы класса получают в первом аргументе (с именем ве11 в соответствии с соглашениями) ссылки на обрабатываемый объект экземпляра — присваивание атрибутам через ссылку ве11 создает или изменяет данные экземпляра, а не класса.

Первый пример Обратимся к первому примеру, демонстрирующему работу этих идей на практике. Для начала определим класс с именем г1гвтС1авв, выполнив инструкцию с1авв в интерактивной оболочке интерпретатора РуФ)топ: № Определить обьект класса № Определит~ иетоды класса № зе) Г - это экземпляр »» о)авв 11гвтс1авв: бег ветбатв(ве11, ча1ое): ве11,бата = чв1ое бв1 б1вр1ау(вв11); рг1пт ве11.бвтв № зе)Г сага данные экземпляроа Здесь мы работаем в интерактивной оболочке, но обычно такие инструкции выполняются во время импортирования вмещающего файла модуля. Подобно функциям, создаваемым с помощью инструкции бе1, классы не существуют, пока интерпретатор Ру$Ьоп не достигнет этих инструкций и не выполнит их. Как и все составные инструкции, инструкция с1авв начинается со строки заголовка, содержащей имя класса, за которой следует тело класса из одной или более вложенных инструкций (обычно) с отступами.

Здесь вложенными инструкциями являются инструкции бе1 — они определяют функции, реализующие поведение класса. Как мы уже знаем, инструкции бе1 в действительности являются операциями присваивания — в данном случае они присваивают объекты функций именам ее(бата и бтвр1ау в области видимости инструкции с1авв и тем самым создают атрибуты, присоединяемые к классу: г1гв(С1авв.

ее(бата Глава 23. Основы программирования классов и Ут гвгС1авв. б! вр1ву. Фактически любое имя, которому присваивается значение на верхнем уровне во вложенном блоке класса, становится атрибутом этого класса. Функции внутри классов обычно называются методами. Это обычные инструкции бег, и для них верно все то, что мы уже знаем о функциях (они могут иметь аргументы со значениями по умолчанию, возвращать значения и т.

д.). Но в первом аргументе методы автоматически получают подразумеваемый объект экземпляра — контекст вызова метода. Нам необходимо создать пару экземпляров, чтобы понять, как это делается: »> х = В1гетС1езз() »> у = Г1гесс1еез() я Создается две экземпляра З Каждый является отдельнын пространстеон явен »> х.зесбесе("к1пд Агсьог") я Вызов метода: зе1г — зто х »> у. ее(бесе(З.1475Э) я эквнеалентно етгзгс1ззз зегбагаСс 3 74759) Ни х, ни у не имеют собственного атрибута ее(багз, поэтому, чтобы отыскать его, интерпретатор следует по ссылке от экземпляра к классу. В этом заключается суть наследования в языке Ру1)гонг механизм наследования привлекается в момент разрешения имени атрибута, и вся Рис.

Характеристики

Тип файла
DJVU-файл
Размер
11,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6358
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее