Shape.__init__(self, x, y)
self.radius = r
def area(self):
"""метод area класса Circle: возвращает площадь круга."""
return self.radius * self.radius * self.pi
def __str__(self):
return "Circle of radius %s at coordinates (%d, %d)"\
% (self.radius, self.x, self.y)
Классы определяются ключевым словом class . Метод-инициализатор экземпля-ра (конструктор) класса всегда называется __init__ . Здесь создаются и иници-ализируются переменные экземпляров x и y . Методы, как и функции, опреде-ляются ключевым словом def . Первый аргумент любого метода по соглашению называется self . При вызове метода self присваивается ссылка на экземпляр, для которого был вызван метод. Класс Circle наследует от класса Shape , а в точке определяется переменная класса. Класс в своем инициализаторе должен явно вы-звать инициализацию базового класса . Метод __str__ используется функцией print . Другие специальные атрибуты методов обеспечивают перегрузку опера-торов или используются встроенными методами, такими как функция вычисления длины ( len ).
Импортирование этого файла открывает доступ к этим классам: >>> import sh
>>> c1 = sh.Circle()
>>> c2 = sh.Circle(5, 15, 20)
>>> print(c1)
Circle of radius 1 at coordinates (0, 0)
>>> print(c2)
Circle of radius 5 at coordinates (15, 20)
>>> c2.area()
78.539749999999998
>>> c2.move(5,6)
>>> print(c2)
Circle of radius 5 at coordinates (20, 26)
Инициализатор вызывается неявно, а в программе создается экземпляр круга . Функция print неявно использует специальный метод __str__ . Как видно из ли-стинга, в программе доступен метод move класса Shape (родительского по отношению к Circle ) . Метод вызывается применением синтаксиса атрибутов к экземпляру объекта: объект.метод() . Значение первого параметра ( self ) задается неявно.
Итоги
В этой главе приведен краткий и чрезвычайно общий обзор Python, в следующих главах эти вопросы будут рассмотрены более подробно. Эта глава завершает общее описание Python.
Возможно, вам будет полезно вернуться к этой главе и еще раз рассмотреть под-ходящие примеры после того, как вы прочитаете изложение соответствующих тем в последующих главах.
Если вы читали эту главу как обзор или вам хотелось бы узнать больше о не-которых возможностях Python, перейдите к соответствующим главам.
Прежде чем переходить к части 4, необходимо четко понимать возможности Python, представленные в этой главе.
ЧАСТЬ 2
Основной материал В следующих главах изложены основные темы, относящиеся к языку Python. Мы начнем с азов построения программ Python, а потом перей-дем к встроенным типам данных и управляющим структурам, а также определению функций и использованию модулей.
В последней главе этой части я покажу, как писать автономные про -граммы Python, работать с файлами, обрабатывать ошибки и пользо -ваться классами.
4 Основы
Эта глава охватывает следующие темы:
3 Отступы и структурирование блоков
3 Дифференцирование комментариев
3 Назначение переменных
3 Оценка выражений
3 Использование общих типов данных
3 Получение пользовательского ввода
3 Использование правильного питонического стиля В этой главе описаны фундаментальные концепции Python: вы узнаете, как исполь-зовать присваивание и выражения, как ввести число или строку, как определить комментарии в коде и т. д. Глава начинается с пояснения способа оформления программных блоков Python, который отличается от всех популярных языков.
4.1. Отступы и оформление блоковPython отличается от многих других языков программирования тем, что он ис-пользует символы-пропуски (whitespace) и отступы для определения структуры блоков (то есть для определения того, какой код образует тело цикла, секцию else условной конструкции и т. д.). В большинстве языков для этой цели используются фигурные скобки. Приведенный ниже код на C вычисляет факториал 9 и сохраняет результат в переменной r :
/* Код на языке C */
int n, r;
n = 9;
r = 1;
while (n > 0) {
r *= n;
n--;
}
Фигурные скобки ограничивают тело цикла while , то есть код, выполняемый с каждым повторением цикла. Обычно в коде расставляются отступы большего или меньшего размера, которые четко показывают, что происходит в программе, хотя код также можно записать в следующем виде:
/* А это код C с произвольными отступами */
int n, r;
n = 9;
r = 1;
while (n > 0) {
r *= n;
n--;
}
Такой код будет работать правильно, хотя читать его будет намного труднее. Экви-валентный код на Python выглядит так:
# Код на Python.
n = 9
r = 1
while n > 0:
r = r * n Python также поддерживает конструкции в стиле C r * = n n = n - 1
Python также поддерживает n -= 1
Читать дальше