Объектно-ориентированным программированием называется такой подход к программированию, в котором используются понятия класса и объекта. Говоря проще, когда перед нами стоит задача запрограммировать какой-либо объект, то намного легче сделать это описав этот объект, чем написав ряд функций.
Терминология объектно-ориентированного программирования:
- Класс (Class): Определенный программистом прототип программируемого объекта с набором атрибутов (переменных и методов), которые описывают данный объект. Доступ к аттрибутам и методам осуществляется через точку
- Переменная класса (Class variable): Переменная, доступная для всех экземпляров данного класса. Определяется внутри класса, но вне любых методов класса.
- Экземпляр класса (Instance): Отдельный объект-представитель определенного класса.
- Переменная экземпляра класса (Instance variable): Переменная определенная внутри медота класса, принадлежащая только к этому классу.
- Метод (Method): Особая функция, определенная внутри класса.
- Наследование (Inheritance): Передача аттрибутов и методов родительского класса дочерним классам.
- Перегрузка функций (Function overloading): Изменение работы метода, унаследованного дочерним классом от родительского класса.
- Перегрузка операторов (Operator overloading): Определение работы операторов с экземплярами данного класса.
Создание класса в Python:
Определение класса начинается с ключевого слова class, после него следует имя класса и двоеточие. Теперь с отступом можно описывать сам класс.
class Elevator: """ Simple elevator class """ # Переменная класса. Сколько людей было перевезено ВСЕМИ лифтами people_lifted = 0 # Конструктор класса. Вызывается при создании экземпляра класса def __init__(self,name): self.name = name # переменная экземпляра класса. Количество людей перевезенных КОНКРЕТНЫМ лифтом self.people_lifted = 0 # Метод перевозки людей def lift(self): print ("{} lifted someone".format(self.name)) # Увеличиваем количество людей перевезенных ЭТИМ лифтом self.people_lifted += 1 # Увеличиваем количество людей перевезенных ВСЕМИ лифтами Elevator.people_lifted += 1 # Метод печатающий информацию о конкретном лифте def info(self): print (self.name, "lifted", self.people_lifted, "people out of", Elevator.people_lifted)
Создание экземпляров класса:
Чтобы создать экземпляр класса следует любой переменной присвоить значение имени класса, указав в скобках аргументы, которые принимает метод __init__().
elevator_1 = Elevator("OTIS") elevator_2 = Elevator("PHILLIPS")
Получение доступа к атрибутам и методам класса:
Чтобы получить доступ к атрибутам класса в Python следует после объекта поставить точку и написать имя переменной или метода, которые вы хотите использовать:
# Везем человека в лифте под именем OTIS elevator_1.lift() # Везем двоих человек в лифте под именем PHILLIPS elevator_2.lift() elevator_2.lift() # Получаем информацию по лифту под именем OTIS elevator_1.info() # Получаем информацию по лифту под именем PHILLIPS elevator_2.info()
Соединив все это в одном файле, получим следующее:
Углубленные темы объектно-ориентированного программирования, которые мы еще рассмотрим:
Множественное наследование в Python.
Перегрузка операторов в Python.
Сокрытие данных класса в Python.
Принципы ООП.