Самостоятельная работа
Задание №4
5-Классы и объекты
В реальной жизни мы оперируем не переменными или функциями, а объектами. Светофор, автомобиль, пешеход, кошка, собака, самолет -это все объекты. Более подробно рассмотрим такой объект, как кошка. Абсолютно все кошки, обладают некоторыми характерными свойствами, или параметрами. К ним можно отнести наличие хвоста, четырех лап, шерсти, усов и т. п. Но это еще не все. Помимо определенных внешних параметров кошка может выполнять свойственные ей действия: мурлыкать, шипеть, царапаться, кусаться. Теперь возьмем такой объект, как автомобиль. Абсолютно все автомобили имеют кузов, колеса, фары, двигатель, тормоза и т. п. Помимо этих внешних параметров автомобиль может выполнять свойственные ему действия: двигаться, тормозить, издавать звуковой сигнал, выпускать выхлопные газы и т. п. Только что мы словесно описали некие общие свойства всех кошек и всех автомобилей в целом, т. е. описали два класса -класс Кошка и класс Автомобиль. Подобное описание характерных свойств и действий какого-то объекта на различных языках программирования и называется классом. Класс - просто набор переменных и функций, которые описывают какой-то объект. Если все кошки (как класс) имеют общую характеристику- наличие шерсти, то каждая конкретная кошка (как объект) будет иметь свойственную только ей длину шерсти, окрас шерсти, цвет глаз. То же самое касается и автомобиля: все автомобили (как класс) имеют кузов, но каждый конкретный автомобиль (как объект) имеет свою форму кузова, свой цвет кузова. Все автомобили имеют колеса, но на каждом конкретном автомобиле стоят шины определенного размера и завода-изготовителя. Исходя из вышесказанного, очень важно понимать разницу между классом и конкретным объектом этого класса. Класс - это некая схема, которая описывает объект в целом. Объект класса -это, если можно так сказать, материальное воплощение некого конкретного элемента из данного класса. Класс кошка - это описание ее свойств и действий, он всегда только один. А объектов-кошек может быть великое множество. По аналогии класс Автомобиль - это описание свойств и действий автомобиля, такой класс всегда только один. А объектов-автомобилей может очень много (рис. 2.41).
Классы Для создания класса надо написать мючевое слово class и затем указать имя этого класса. Создадим класс кошек с именем cat:
class Cat:Дальше нам нужно перечислить действия, которые будет способен соверщать наш класс (в данном случае возможные действия кошки). Такие действия реализуются в виде функций, которые описываются внутри класса. Функции, прописанные внутри класса, называть методами. Словесно мы можем описать следующие методы кошки (действия, которые она может совершать): мурлыкать (purr), шипеть (hiss), царапаться (scrable). Теперь реализуем эти методы в классе кошки cat на языке Python
# Класс кошки
class Cat:
# Мурлыкать
def purr (self):
print("Myppp!")
# Шипеть
def hiss (self):
рrint("Шшшш ! ")
# Царапаться
def scrabЬle(self):
рrint("Цап-царап!")
Все достаточно просто! Мы создали класс с именем cat и внутри него определили три обычные функции с именами purr, hiss и scrabЫe. Как видно из вышеприведенного программного кода, каждая из трех описанных функций имеет единственный параметр self. Рассмотрим, зачем нужен и что означает этот параметр в функциях Python, описанных внутри класса. Классам нужен способ, что ссылаться на самих себя. В методах класса первый параметр функции по соглашению именуют self, и это ссылка на сам объект данного класса. Помещать данный параметр нужно в каждую функцию, чтобы иметь возможность вызвать ее на текущем объекте. Таким образом, self заменяет идентификатор объекта. Все наши кошки (объекты cat) способны мурлыкать (имеют метод purr). Теперf:: мы хотим, чтобы замурлыкал наш конкретный объект-кошка, созданный на основе класса cat. Как это сделать? Допустим, мы в Python напишем следующую команду
Cat.purr()
Если мы запустим на выполнение эту команду, то будут мурлыкать сразу все коты на свете. А если мы будем использовать команду:
self. purr ()
то будет мурлыкать только та особь, на которую укажет параметр self, т. е. только наш кот.
Объекты
Мы создали класс- кошки. Теперь создадим на его основе реальный объект - кошку: my_cat = Саt('Цвет шерсти', 'Цвет глаз', 'Кличка') В строке выше мы создаем переменную my_cat, а затем присваиваем ей объект класса cat. Выглядит это все так, как вызов некоторой функции Cat ( ... ) . На самом деле так и есть. Этой записью мы вызываем метод _init_() класса cat. Функция _ init _ () в нашем классе принимает четыре аргумента: сам объект класса - self, который указывать не надо, а также еще три аргумента, которые затем становятся атрибутами нашей кошки. Итак, с помощью строчки выше мы создали реальный объект - нашу собственную кошку. Для этой кошки зададим следующие атрибуты, или свойства: белую шерсть, зеленые глаза и кличку Мурка. Давайте выведем эти атрибуты в консоль с помощью программного кода
my_cat = Саt('Белая', 'Зеленые', 'Мурка')
рrint("Наименование класса -", my_cat.Name_Class)
print("Boт наша кошка:")
print("Цвeт шерсти-", my_cat.wool_color)
print("Цвeт глаз-", my_cat.eyes_color)
рrint("Кличка-", my_cat.name)
То есть обратиться к атрибутам объекта мы можем, записав имя объекта, поставив точку и указав имя желаемого атрибута. Результаты работы этой программы представлены на рис. 2.42
Атрибуты кошки можно менять. Например, давайте сменим кличку нашему питомцу и поменяем цвет (выпустим кота Ваську черного цвета). Изменим программный код (листинг 2.20).
my_cat = Саt('Белая', 'Зеленые', 'Мурка')
my_cat.name = "Васька"
my_cat.wool_color = "Черный"
print ("Наименование класса - ", my_cat.Name_Class)
print("Boт наша кошка:")
print("Цвeт шерсти- ", my_cat.wool color)
print("Цвeт глаз- ", my_cat.eyes_color)
print ("Кличка- ", my_cat .name)
В итоге получим следующий результат (рис. 2.43).
Теперь вспомним, что в нашем классе cat запрограммирована возможность выполнять некоторые действия. Попросим нашего кота Ваську мяукнуть. Добавим в вышеприведенную программу всего одну строчку: my_cat .purr () Выполнение данной команды выведет в консоль текст "Муррр!" (рис. 2.44). Как видите, обращаться к методам объекта так же просто, как и обращаться к его атрибутам.
Самостоятельная работа
Задание №5
Do'stlaringiz bilan baham: |