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

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

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

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

Методы меягакласса. Я решил это упражнение, как показано ниже. Обратите внимание, что операторы будут извлекать атрибуты с помощью метода детаТТг — он должен возвращать значение, чтобы операторы могли работать: »> с1ввв НаСа: Се? десаттг (зе1Г, паве): рг!пс 'де!', паве сег веса!!к (ве1г, паве, ча1це); рг!и! 'ве!', паве, ча1цв »> х = Ив!в() »> х.аррвпй дет вррепб »> х.зрвв "рогК" зет пращ роги »> »>х+2 дет соегсе ТгвсеЬвсК (тппегвоз! 1ззт): Р!1е "<зто!и>", 1!пе 1, !п ? ТуреЕггог: са11 оу поп-Гцпст!оп (ТуреЕггог: попытка вызова объекта, не являющегося функцией) »> »> х[!] де! де!!Тев ТгвсеЬаск (!ппегвозт 1вз!): Е!1е "<зто!п>", 1!пе 1, !п ? ТуреЕггог; св11 от поп-Гцпст!оп (ТуреЕггог: попытка вызова обьекта, не являющегося функцией) »> х[1:6] дет 1еп тгасеьаск (!ппегюозт 1взт): Р>1е "<зтотп>", 1тпе ?, !п ? ТуреЕггаг: св11 о( поп-Гцпст!оп (ТуреЕггог: попытка вызова объекта, не являющегося Функцией) 5.

Обаеклгы множеств. Ниже приводится сеанс взаимодействия, который должен у вас получиться. Комментарии описывают, какие методы вызываются. % руспоп »> Ггою веСигаррег !врогт зеС »> х = двт([1, 2, 3, 4]) а Вызывается ,]лтг Приложение В »> у = Зег([3, 4, 5]) № ало, !пгвгзеса затеи гврг »> х а у Зет; [3, 4] »>х[у Зет;[1, 2, 3, 4, 5] № ог, ил>оп, затеи герт »> г Зег("Ье11о") »> г[0], г[-1] ('Ь', 'о ) № гл]г удаляет повторяюииеся символы № дегггви »> Гог с 1п г: рг1пг о, № дат!сею се)о >» 1еп(г), г № ]вл, герт (4, Зет.['Ь', 'е', '1', 'а']) »> г а "ше11о", г ] "ше11о" (Зет.'['е', '1', 'о'). Зв1:['Ь', 'е', '1', 'о', 'и']) Мой расширенный подкласс, позволяющий обрабатывать сразу несколько операндов, приводится ниже (файл лги]1]ве(.ру).

В нем потребовалось изменить всего два метода из оригинального набора. Строка документирования в классе поясняет принцип его действия: ггош зетшгаррег тврогт Зе! с1азз иы111звт(зет); Наследует все атрибуты класса Зет, но расширяет методы 1птегавот и цп!оп, добавляя возможность обработки нескольких операндов; обратите внимание, что "зе1г' - по-прежнему первый аргумент (теперь сохраняется в списке аргументов агдз). Кроме того, обратите внимание, что теперь унаследованные операторы 6 и ) вызывают новые методы с двумя аргументами, но для одновременной обработки более чем 2 операндов требуется вызов иетода, а не выражения; № Зв!? - агдз! О] № Для всех аргументов № Для всех узлов № Добавить новый элемент в результат Ое( 1птегзес1(зе1?, о!пега): гез = [] (ог х 1п зе1(; (ог отЬег (п отЬегз: 1( х пот (п о!пег: е1зв; гез.аррепо(х) гетыгп Зет(гез) Ое? оп!оп(*агре): гез = [] ?ог зез 1п агдз: (ог х 1п зец: 1Г пот х тп гез: гез.аррепс(х) гетцгп Зет(гез) № Сканировать первую лоследов-ть № Для всех остальных аргументов Ьгеак № Элемент присутствует во всех? № Нвт: прервать цикл № Да.

добавить элеиент в конец ВЗЗ Решения упражнений Ваш сеанс взаимодействия с интерактивной оболочкой должен выглядеть примерно так, как показано ниже. Обратите внимание, что пересечение двух множеств можно находить как с помощью оператора 8, так и с помощью метода 1п1егзес1, но для случая трех и более множеств обязательно нужно вызывать метод 1п1е гзес1 — оператор 3 является двухместным. Кроме того, обратите внимание, что можно было класс ИО11! бег назвать просто Зег, чтобы сделать это изменение более прозрачным, если бы в файле ао111ве1 в качестве имени наследуемого класса мы использовали полное имя ве1нгаррег. Яе1: »> ггоа ао111зе1 1арог1 * »> х = Иа1118е1([1,2,3,4]) »> у = Ио)118е1([3,4,5]) »> а = Иа)118е1([0, 1,2]) »>хау,х)у (Зег [3, 4], Зег:[1, 2, 3, 4, 5]) № Два операнда »> х.1п1егвес1(у, а) Зес:[] »> х.сп1оп(у, а) Зе1.[1, 2, 3, 4, 5, О] »> х.

1п1егзес1([1, 2. 3], [2, 3, 4], [1, 2, 3]) № Четыре операнда Зег: [2, 3] »> х.оп1оп(гап9е(!О)) Зег.[1, 2, 3, 4, О, 5, б, 7, 8, 9] № Три операнда № Даа операнда такие допустииы с1азз 1тзтог: Оеу герт (зе11); ге!ого (7<1пвгапсе оу Ив(%з), ассгевв Из:~пьв>" % (зе1(, с1авв , паве , № Иия коего класса ве1(.всрегв(), № Мои суперклассы тс(ве1(), № Мой адрес зе1(.аыгпааев()) ) № список паие=уа1ые сег а11гпааев(ве11); ...не изиенился.. Ое( всрегз(ве1(): гево11 = "" Г!ГВ1 = 1 Гог всрег 1п ве11. с1авв . Ьавев : № Вверх на один урозен> 6. Связи в дереве классов.

Ниже показано, как я изменил класс [1з(е г, и результат повторного запуска теста. Чтобы дополнительно отобразить унаследованные атрибуты, необходимо реализовать метод, аналогичный текущему методу а11гпааез, и предусмотреть в нем рекурсивный обход ссылок Ьазев в каждом классе. Поскольку, начиная с версии РуФ]юп 2.2, функция О[г включает в результат унаследованные атрибуты, можно было бы просто организовать цикл по ее результатам: например, Гог х 1п 01г(зе11) и использовать Оега11г(ве1[, х). Однако такой прием не поможет, если вам потребуется вывести структуру дерева классов (как в примере с[азв1гее.ру в главе 24]: Приложение В 1( пес (1гзс: гевц11 = гевц1с ь ", " (1гвС = 0 гезц1с = гезо1С ь ВЬРЕг. Паев ге!ого гевц11 № имя, не герт(зцрег) С:1руСПопхехаер1ев> руСПоп Сезве1х1п.ру <1пзсапсе ог Зць(Серег, ссзсег), аббгевв 7641200; паве бата3=42 паев бата2=еров паве ба(а)=ярам > с1азв Ьопсп: бет сп1С (ве)Г): № создать/встроить сцясоюег и еер)оуее ве1(.сцвс = сцвсоеег() ве1(.еер1 = Еер1оуее() бе( огбег(ве1(, (ообйаее): № начать имитацию офориления заказа ве1п сцвс.р1асеОгбег((ообйаее, ве1(.еер1) бе( гевц11(ве1(): № узнать у клиента название блюда ве1(.сцвт.ргспСЕооб() с1авв Сцжоеег Оет !псС (ве1(): № Ннициалиэировать блюдо значением Ноле ве!Е Гооб = йопе бес р1асеОгбег(ве1(, (ообйаее, еер1оуее): № Передать эакаэ официанту ве1(.гоаб = еер1оуее.сахеОгбег(гообиаее) бет рг1пСЕооб(ве!Г): № Вывести название блюда ргспС зе1(,тооб.паве с1авв Еер1оуее: бег сахеОгбег(ве1(, гоооиаее): № Вернут~ блюдо с требуем~и наэеаниеи геСцгп Еооб(сообйаее) с1авз Еооб: бес спсС (ВЕ1(, паве): ве1(.паев = паев № Сохранить название блюда сс паве == ' еасп х = СцпсЬ() х,огбег('Ьогг1Сов') х,гево!С() х.огбег('рсгга ) х.гевц1С() № Програииный код самопроверки № Если запускается как сценарии, № а не иилортируется как иодуль % руСПоп 1цпсП.ру ЬцггсСов остад 8.

Классификация лсиеотнык в зоологии. Ниже приводится мой способ реализации классификации животных на языке РуС)соп (файл 7. Композиция. Мое решение с комментариями, взятыми из описания, приводится ниже (файл 1илсЛру). Это один из случаев, когда свою мысль проще выразить на языке Ру()соп, чем на естественном языке: 815 Решения упражнений гоору); этот пример достаточно искусственный, но сам принцип применим ко многим реальным ситуациям, начиная от реализации графического интерфейса и заканчивая базами данных сотрудников.

Обратите внимание, что в классе Аптаа! выполняется обращение к методу зе1(. зреаК, это приводит к выполнению независимого поиска метода зреаК в дереве наследования, начиная с подкласса. Протестируйте работу этого дерева классов, следуя описанию упражнения. Попробуйте дополнить эту иерархию новыми классами и создать экземпляры различных классов в дереве: с1аы Ап1аа1: ое! гер1у(ве1!): зе1г.вреак() й Вызов негода подкласса Ое( зреаК(ве1!): рпп! 'враз' Ф Собственное сообщение с1азз Маааа1(Ап!аа1): Ое! возах(зе1!): рг(п! 'Ьипд' с1азв Сат(Маааа1): оег зреак(зе11) рг1п! 'аеощ' с1азв род(яаааа1): Ое! вреаК(ве1Г): рг!Ьт 'Ьагн' с1авв Рпаа!е(Маааа1): оег вреак(ве1!): рг!пт 'не11о иог1о!' с1авв наскег(Рг1аа1е): раы Л Наследует класс Рг1аасе 9.

Сценка с мертвым попугаем. Ниже приводится мое решение этого упражнения (файл рагго! ру). Обратите внимание на то, как работает метод 11пе в суперклассе Астог: он дважды обращается к атрибутам аргумента зе11, дважды отсылая интерпретатор к экземпляру, и тем самым дважды инициирует поиск в дереве наследования— зе1!. паве и зе1!. зауз(), с целью отыскать требуемую информацию в подклассах: с1ввз Ас!Ог; оег 1!пе(зе)г): ргтп! ве1(.паве + ':', герт(ве1(.заув()) с1аы сивтоаег(Астог): паве = 'сив!оаег' оег пауз(ве11); ге!игп чьа!'в опе ех-ь1гш с1азв С1егК(Астог): паве = 'с1егх' Ое! заув(зе1О ге!игп "по 1! 1вп'П .

с1азв Рагго!(Ас!ог): паве = 'рагго!' Ое! ваув(ве1!): гешгп Моле с1авз Зсепе; Ое! !Ь11 (зе1!): ве1(.с1егК = С1егх() Ф Встраивание некоторых зкзеипллрое зе1(.сиз!оаег = Сиз!оаег() Л Ясепе — это составной объект 816 Приложение В зе1Г,зоо)есс = Рагго(() бе( асг(оп(ве1(): ве1у.созтозег.

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

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

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

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