Создание
и использование класса
163
Создание экземпляра класса
Считайте, что класс — это своего рода инструкция по созданию экземпляров. Со-
ответственно, класс
Dog
— инструкция по созданию экземпляров, представляющих
конкретных собак.
Создадим
экземпляр, представляющий конкретную собаку:
class Dog():
...
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
Использованный в данном случае класс
Dog
был написан в предыдущем при-
мере. В точке
мы приказываем Python создать экземпляр собаки с кличкой
'willie'
и возрастом 6. В процессе обработки этой строки Python вызывает ме-
тод
__init__()
класса
Dog
с аргументами
'willie'
и 6. Метод
__init__()
создает
экземпляр, представляющий конкретную собаку, и присваивает его атрибутам
name
и
age
переданные значения. Метод
__init__()
не содержит явной команды
return
,
но Python автоматически возвращает экземпляр, представляющий собаку. Этот
экземпляр сохраняется в переменной
my_dog
. Здесь нелишне вспомнить соглаше-
ния по записи имен: обычно считается, что имя, начинающееся с символа верхнего
регистра (например,
Dog
), обозначает класс, а имя, записанное в нижнем регистре
(например,
my_dog
), обозначает отдельный экземпляр, созданный на базе класса.
Обращение к атрибутам
Для обращения к атрибутам экземпляра используется «точечная» запись. В стро-
ке
мы обращаемся
к значению атрибута
name
экземпляра
my_dog
:
my_dog.name
Точечная запись часто используется в Python. Этот синтаксис показывает, как
Python ищет значения атрибутов. В данном случае Python обращается к экзем-
пляру
my_dog
и ищет атрибут
name
, связанный с экземпляром
my_dog
. Это тот же
атрибут, который обозначался
self.name
в классе
Dog
. В точке
тот же прием ис-
пользуется для работы с атрибутом
age
. В первой команде
print
вызов
my_dog.name.
title()
записывает
'willie'
(значение атрибута
name
экземпляра
my_dog
) с символа
верхнего регистра. Во второй команде
print
вызов
str(my_dog.age)
преобразует 6,
значение атрибута
age
экземпляра
my_dog
, в строку.
Пример выводит
сводку известных фактов о
my_dog
:
My dog's name is Willie.
My dog is 6 years old.
Вызов методов
После создания экземпляра на основе класса
Dog
можно применять точечную за-
пись
для вызова любых методов, определенных в
Dog
: