Лабораторная работа 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()
, который выводит, доступна ли книга.