Объектно-ориентированное программирование в Python

Published: 04 November 2014

* ООП

Объектно-ориентированным программированием называется такой подход к программированию, в котором используются понятия класса и объекта. Говоря проще, когда перед нами стоит задача запрограммировать какой-либо объект, то намного легче сделать это описав этот объект, чем написав ряд функций.

Терминология объектно-ориентированного программирования:

* Класс (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") # Увеличиваем количество людей перевезенных ЭТИМ лифтом 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.

Сокрытие данных класса в Python.

Принципы ООП.