М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет124/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   120   121   122   123   124   125   126   127   ...   334
Байланысты:
Изучаем Python

созданием экземпляра
; таким об-
разом, вы работаете с экземплярами класса. В этой главе вы будете писать классы 
и создавать экземпляры этих классов. Вы будете указывать, какая информация 
может храниться в экземплярах, и определять действия, которые могут выпол-
няться с экземплярами. Также вы будете писать классы, расширяющие функцио-
нальность существующих классов; это позволяет организовать эффективное 
совместное использование кода похожими классами. Вы будете сохранять классы 
в модулях и импортировать классы, написанные другими программистами, в ваши 
программные файлы.
С хорошим пониманием объектно-ориентированного программирования вы взгля-
нете на мир с точки зрения программиста. Вам будет проще понять свой код — 
увидеть не только то, что происходит в каждой его строке, а более масштабные 
концепции, лежащие в его основе. Логика, заложенная в основу классов, научит 
вас мыслить логически, чтобы ваши программы эффективно решали практически 
любые задачи, с которыми вы можете столкнуться.
Кроме того, классы упрощают жизнь вам и другим программистам, с которыми вам 
придется работать совместно над более серьезными проектами. Когда вы и другие 
программисты пишете код, базирующийся на сходной логике, вам будет проще 
разобраться в коде, написанном другими людьми. Ваши программы будут понятны 
коллегам, и в результате все вы сможете добиться больших результатов.


Создание и использование класса
171
Создание и использование класса
Классы позволяют моделировать практически все что угодно. Начнем с написания 
простого класса 
Dog
, представляющего собаку — не какую-то конкретную, а собаку 
вообще. Что мы знаем о собаках? У них есть кличка и возраст. Также известно, что 
большинство собак умеют садиться и перекатываться по команде. Эти два вида 
информации (кличка и возраст) и два вида поведения (сидеть и перекатываться) 
будут включены в класс 
Dog
, потому что они являются общими для большинства 
собак. Класс сообщает Python, как создать объект, представляющий собаку. По-
сле того как класс будет написан, мы используем его для создания экземпляров, 
каждый из которых представляет одну конкретную собаку.
Создание класса Dog
В каждом экземпляре, созданном на основе класса 
Dog
, будет храниться кличка 
(
name
) и возраст (
age
); кроме того, в нем будут присутствовать методы 
sit()
и 
roll_over()
:
dog.py

class Dog():

"""Простая модель собаки."""

def __init__(self, name, age):
"""Инициализирует атрибуты name и age."""

self.name = name
self.age = age

def sit(self):
"""Собака садится по команде."""
print(f"{self.name} is now sitting.")
def roll_over(self):
"""Собака перекатывается по команде."""
print(f"{self.name} rolled over!")
В этом коде есть много мест, заслуживающих вашего внимания, но не беспокойтесь. 
Эта структура неоднократно встретится вам в этой главе, и вы еще успеете к ней 
привыкнуть. В точке 

определяется класс с именем 
Dog
. По общепринятым согла-
шениям имена, начинающиеся с символа верхнего регистра, в Python обозначают 
классы. Круглые скобки в определении класса пусты, потому что класс создается 
с нуля. В точке 

приведена строка документации с кратким описанием класса.
Метод __init__()
Функция, являющаяся частью класса, называется 
методом
. Все, что вы узнали 
ранее о функциях, также относится и к методам; единственное практическое раз-
личие — способ вызова методов. Метод 
__init__()
в точке 

— специальный метод, 


172
Глава 9 • Классы
который автоматически выполняется при создании каждого нового экземпляра на 
базе класса 
Dog
. Имя метода начинается и заканчивается двумя символами подчер-
кивания; эта схема предотвращает конфликты имен стандартных методов Python 
и методов ваших классов. Будьте внимательны: два символа подчеркивания долж-
ны стоять на 
каждой
стороне 
__init__()
. Если вы поставите только один символ 
подчеркивания с каждой стороны, то метод не будет вызываться автоматически 
при использовании класса, что может привести к появлению коварных ошибок.
Метод 
__init__()
определяется с тремя параметрами: 
self

name
и 
age
. Пара-
метр 
self
обязателен в определении метода; он должен предшествовать всем 
остальным параметрам. Он должен быть включен в определение, потому что 
при будущем вызове метода 
__init__()
(для создания экземпляра 
Dog
) Python 
автоматически передает аргумент 
self
. При каждом вызове метода, связанного 
с классом, автоматически передается 
self
— ссылка на экземпляр; она предо-
ставляет конкретному экземпляру доступ к атрибутам и методам класса. Когда 
вы создаете экземпляр 
Dog
, Python вызывает метод 
__init__()
из класса 
Dog
. Мы 
передаем 
Dog()
кличку и возраст в аргументах; значение 
self
передается автома-
тически, так что его передавать не нужно. Каждый раз, когда вы захотите создать 
экземпляр на основе класса 
Dog
, необходимо предоставить значения только двух 
последних аргументов, 
name
и 
age
.
Каждая из двух переменных, определяемых в точке 

, снабжена префиксом 
self

Любая переменная с префиксом 
self
доступна для каждого метода в классе, и вы 
также сможете обращаться к этим переменным в каждом экземпляре, созданном 
на основе класса. Конструкция 
self.name
=
name
берет значение, хранящееся в па-
раметре 
name
, и сохраняет его в переменной 
name
, которая затем связывается с соз-
даваемым экземпляром. Процесс также повторяется с 
self.age
=
age
. Переменные, 
к которым вы обращаетесь через экземпляры, также называются 


Достарыңызбен бөлісу:
1   ...   120   121   122   123   124   125   126   127   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет