Файл: Введение в объектноориентированное программирование.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.12.2023
Просмотров: 157
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Уровень: Программирование для начинающих
Созданиеклассовиобъектов.Урок2
Уровень: Программирование для начинающих
Конструкторкласса—метод init .Урок3
Уровень: Программирование для начинающих
Уровень: Программирование для начинающих
Уровень: Программирование для начинающих
Уровень: Программирование для начинающих
Форматирование строк документирования
Пример документированного исходного кода
ПерегрузкаоператороввООП.Урок10
Уровень: Программирование для начинающих
Особенностиобъектно-ориентированногопрограммирования.Урок11
Уровень: Программирование для начинающих
Идеи (принципы) объектно-ориентированного программирования
-
print ("Введите данные о дверных проемах (в метрах) ...") -
h_d = int(input ("высота: ")) -
w_d = int(input ("ширина: ")) -
n = int(input ("количество: "))
Теперь создаем объект класса Room. Описание класса находится в модуле rooms, который был импортирован инструкцией import (а не from), поэтому, чтобы получить доступ к классу Room и его атрибутам, следует при создании объекта указать модуль, в котором он находится:
1. uroom = rooms.Room(l,w,h)
А теперь можно пользоваться атрибутами класса из модуля сколько влезет:
-
uroom.win_door(h_w, w_w, h_d, w_d, m,n) -
uroom.wallpapers() -
uroom.printer()
Практическая работа:
-
Создайте скрипт, импортирующий модуль с классом Room и использующий его (как показано в данном уроке). -
Допишите предыдущую программу, расширив ее возможности: можно по-желанию получить дополнительные сведения (площадь окна и двери). -
Переделайте программу таким образом, чтобы она не запрашивала у пользователя данные, а предлагала выбор из пяти готовых решений: на экран выводятся характеристики различных помещений, — пользователю остается только выбрать.
Методическая разработка урока
Элективный курс: Введение в объектно-ориентированноепрограммированиенаPython
Уровень: Программирование для начинающихВерсияинтерпретатора python:3.-.-
doc- строки документации
На прошлом уроке мы рассмотрели случай импорта программного кода одного файла в другой. Таким образом, например, один программист может использовать разработки другого. К тому же, существует множество стандартных модулей и библиотек, входящих в установочный пакет интерпретатора python, а также огромное количество модулей сторонних разработчиков. Понятно, что чтобы использовать чужую разработку надо знать, что она делает. Для этого вовсе необязательно анализировать исходный код, поскольку есть инструменты для его документирования, которыми приличные программисты должны регулярно пользоваться. Когда кому-то потребуется узнать
, что делает тот или иной скрипт, достаточно будет выполнить специальную команду, которая выдаст описание модуля.
Документировать исходный код на языке программирования Python можно по разному. Иногда бывает достаточно простых комментариев. Еще один способ — это создание строк документации. Они представляют собой текст, заключенный в кавычки (тройные, тройные одинарные, обычные). Такой текст может располагаться после заголовков классов, функций (методов), а также в начале файла (модуля). Пример:
-
""" Строка документации в начале файла. -
А это ее продолжение с новой строки. """ -
class … : -
''' Это строка документирования класса. -
Причем она заключена в тройные одинарные кавычки... -
или одинарные тройные 0_о ''' 7. .....
8. .....
-
def … : -
""" Это документирование модуля. -
Пишите коменты на инглише. """
Для получения доступа к такой документации предусмотрена специальный методdoc. Когда интерпретатор Python обрабатывает исходный код класса или функции и обнаруживает там строки документирования, то делает их значением атрибута doc данного объекта.
Чтобы посмотреть как это выглядит, рассмотрим реальный пример. В языке программирования Python строки, списки, числа являются по- сути такими же классами как и пользовательские (создаваемые для специализированного проекта). Данные классы автоматически загружаются (интерпретируются), когда запускается программа-интерпретатор python, поэтому не требуется дополнительный импорт модулей, содержащих их описание. Однако сути это не меняет, и получить доступ к их строкам документации можно также как и к пользовательскому классу (функции, модулю), а именно имяОбъекта.doc. Пример:
-
>>> print (str.doc) -
str(string[, encoding[, errors]]) -> str 3.
-
Create a new string object from the given encoded string. -
encoding defaults to the current default string encoding. -
errors can be 'strict', 'replace' or 'ignore' and defaults to 'strict'.
Таким образом, мы получили данные о классе str (описывает атрибуты строк). Однако мы не получили никаких сведений о методах данного класса. Да и вообще: какие методы есть у строк? Тут может помочь встроенная функция dir, которая выводит список переменных (атрибутов) переданного ей аргумента.
1. >>> dir(str)
2. ['add', 'class', 'contains', 'delattr', 'doc', 'eq', 'format', 'ge',
'getattribute', 'getitem', 'getnewargs', 'gt', 'hash', 'init', 'iter', 'le', 'len', 'lt', 'mod', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr',
'rmod', 'rmul', 'setattr', 'sizeof', 'str', 'subclasshook', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Допустим, нас интересует функция метод find, но мы точно не знаем, делает ли он то, что нам нужно. Выяснить это можно так:
-
>>> print (str.find.doc) -
S.find(sub[, start[, end]]) -> int 3.
4. Return the lowest index in S where substring sub is found, such that sub is contained within s[start:end]. Optional arguments start and end are interpreted as in slice notation.
5.
6. Return -1 on failure.
Становятся
известны следующие подробности. Оказывается функция find класса str просто возвращает первый индекс подстроки переданной ей в качестве аргумента, если та встречается в строке. По желанию можно указать откуда и докуда искать в исходной строке. Не в тему, но чтобы было понятно:
-
>>> a = "hello new worlds" #создаемстроку -
>>> a.find("new") #ищеминдекспервогоэлементаподстроки
3. 6
4. >>> a.find("l",7) #ищеминдекссимвола,начинаяс8-гоэлемента
5. 13