Лабораторная работа 13. Объекты и классы
Объектно-ориентированное программирование (ООП) — это подход к программированию, при котором данные и функции, работающие с ними, объединяются в объекты. В Python классы служат для создания объектов, которые имеют свои свойства и методы.
Создание класса в Python
Чтобы создать класс, используйте ключевое слово class. Внутри класса можно определять атрибуты и методы.
class Animal:
def __init__(self, name, age):
self.name = name # Атрибут объекта
self.age = age # Атрибут объекта
def speak(self):
print(f"{self.name} издаёт звук.")
Создание объекта класса
Для создания объекта класса необходимо вызвать класс как функцию, передав ему необходимые параметры.
dog = Animal("Шарик", 5)
print(dog.name) # Шарик
print(dog.age) # 5
dog.speak() # Шарик издаёт звук.
Атрибуты класса и объекта
- Атрибуты объекта: уникальны для каждого объекта, например,
self.nameиself.ageв примере выше. - Атрибуты класса: общие для всех объектов класса, их можно объявить вне метода
__init__.
class Dog:
species = "Canis lupus" # Атрибут класса
def __init__(self, name, age):
self.name = name
self.age = age
Методы экземпляра класса
Методы экземпляра — это функции, которые работают с данными конкретного объекта. Метод __init__ — это конструктор, он вызывается при создании объекта.
class Car:
def __init__(self, model):
self.model = model
def drive(self):
print(f"{self.model} едет.")
Наследование
Наследование позволяет создавать новый класс на основе существующего. Новый класс наследует все атрибуты и методы родительского класса.
class Bird(Animal):
def fly(self):
print(f"{self.name} может летать.")
Полиморфизм
Полиморфизм — это способность функций обрабатывать данные разных типов. Например, метод speak может быть определён в разных классах и выполнять различную логику.
class Cat(Animal):
def speak(self):
print(f"{self.name} мяукает.")
class Dog(Animal):
def speak(self):
print(f"{self.name} лает.")
Инкапсуляция
Инкапсуляция позволяет скрывать внутренние данные и методы класса, защищая их от случайного изменения. В Python для этого используются методы и атрибуты с подчеркиванием.
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Закрытый атрибут
def get_balance(self):
return self.__balance def get_balance(self):
return self.__balance
def set_balance(self, amount):
self.__balance = amount
Задания для самостоятельной работы
- Создайте класс
Personс атрибутамиnameиageи методом для вывода информации о человеке. - Напишите класс
Student, который наследуется отPerson, и добавьте ему атрибутgrade. - Реализуйте полиморфизм, создайте несколько классов с общим методом
describe, который выводит разные сообщения. - Создайте класс с инкапсуляцией данных и методами доступа к закрытым атрибутам.
Создайте класс
Employeeс атрибутами:name(имя),salary(зарплата),- и методом
display_info, который выводит информацию о сотруднике.
Затем создайте класс
Manager, который наследуетEmployee, добавив атрибутdepartment(отдел) и переписав методdisplay_infoтак, чтобы он выводил также и отдел.6. Создайте класс
LibraryBook, который представляет книгу в библиотеке. Атрибуты:title(название),author(автор),__is_checked_out(закрытый атрибут, показывающий, взята ли книга).
Добавьте методы:
check_out(), который проверяет, доступна ли книга и, если да, изменяет статус на "взята",return_book(), который возвращает книгу, делая её доступной,get_status(), который выводит, доступна ли книга.