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