Введение

Это подробное руководство для начинающих по объектно-ориентированному программированию на Python. Цель этого руководства — дать вам представление об объектно-ориентированном программировании и помочь вам понять его основы на практических примерах.
В этом руководстве мы охватывают следующие понятия:

  • Что такое ООП?
  • Класс против объекта.
  • Атрибуты против методов.
  • Наследование

Если вам понравилась эта статья, не забудьте подписаться на меня, чтобы получать больше статей о программировании! Если у вас есть какие-либо вопросы, не стесняйтесь оставлять их в комментариях или вы можете связаться со мной лично.

Требования

  • Базовое понимание Python.
  • Установлен текстовый редактор и питон.

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

Объектно-ориентированное программирование — это подход к моделированию элементов реального мира, таких как игроки в игре или сотрудники компании. Простым примером объекта является автомобиль с такими свойствами, как цвет, скорость, марка и вес, а также такие методы, как увеличение или уменьшение скорости, остановка, поворот направо или налево, движение назад…
Объект имеет в основном две характеристики:

  • атрибуты
  • поведение

Прежде чем продолжить чтение этой статьи… Если вы меня не знаете, меня зовут Хамза, я инженер-программист C# и машинного обучения. Если вы хотите начать разрабатывать программное обеспечение и изучать машинное обучение в качестве инженера-программиста, я буду сопровождать вас в этом приключении и давать вам советы каждый день, следуйте за мной и подпишитесь на мою рассылку новостей, чтобы получать мои ежедневные статьи.

Класс и объект

Мы можем определить класс как схему объекта. Мы можем думать об этом как о наброске автомобиля, содержащем все подробности об автомобиле. Когда класс определен, определяется только описание объекта. Таким образом, память или хранилище не выделяются. Между тем, объект (экземпляр) — это экземпляр класса, объект — это автомобиль красного цвета, например, с максимальной скоростью 300 км/ч.
Здесь я создал простую визуализацию разницы между классом и объект:

Если концепция ООП еще не ясна для вас, не волнуйтесь! Следующий практический пример облегчит вам задачу.

ООП в питоне

Атрибуты

Атрибуты — это характеристика объекта.
Давайте возьмем предыдущий пример и определим класс в Python с именем Car. Чтобы определить класс в Python, мы используем ключевое слово class следующим образом:

class Car:
    pass

Теперь давайте определим наш класс с некоторыми атрибутами:

class Car:
    def __init__(self, color, brand, maxSpeed):
        self.color = color 
        self.brand = brand
        self.maxSpeed = maxSpeed

Функция инициализации является методом инициализации и вызывается при создании экземпляра объекта, например, если мы хотим создать две машины, каждая с определенными свойствами, мы создадим два объекта предыдущего класса, один из которых называется car1, а другой car2, например. :

car1 = Car('red', 'audi', 300)
car2 = Car("blue", "BMW", 120)

Теперь, если мы хотим получить атрибут объекта, мы просто наберем:

print(car1.color)

тогда мы получим красный цвет на выходе.

Методы

Методы — это функции, определенные внутри тела класса. Они используются для определения поведения объекта.
Теперь давайте определим метод с именем changeMaxSpeed():

class Car:
    def __init__(self, color, brand, maxSpeed):
        self.color = color 
        self.brand = brand
        self.maxSpeed = maxSpeed
    def changeMaxSpeed(self, newMaxSpeed):
        self.maxSpeed = newMaxSpeed

Эта функция принимает два параметра: self, который указывает на созданный объект, и newMaxSpeed, новое значение максимальной скорости.

  • Примечание :

Метод должен иметь дополнительный первый параметр в определении метода, который обычно называется «self». Мы не даем значение для этого параметра при вызове метода, его предоставляет Python. Если у нас есть метод, который не принимает аргументов, то нам все равно нужно иметь один аргумент. Это похоже на этот указатель в C++ и эту ссылку в Java.

Теперь давайте создадим автомобиль с максимальной скоростью 200 и изменим его с помощью нашего метода:

car1 = Car('red', 'audi', 200)
car1.changeMaxSpeed(300)

Здесь car1 играет роль self, поэтому его указывать не обязательно, если вы его укажете, то выдаст ошибку о том, что ожидался один параметр, а были даны два.

Наследование

Чтобы понять концепцию наследования, мы возьмем простой пример. Представьте, что у нас есть класс, называемый транспортным средством, и наш предыдущий класс, называемый автомобилем, когда мы впервые создали класс транспортного средства следующим образом:

class Vehicle:
    def __init__(self, color, maxSpeed):
        self.color = color 
        self.maxSpeed = maxSpeed
    def changeMaxSpeed(self, newMaxSpeed):
        self.maxSpeed = newMaxSpeed
    def changeColor(self, newColor):
        self.color = newColor

Теперь, когда мы будем создавать класс Car, мы хотим, чтобы наш класс наследовал от предыдущего класса, а это означает, что мы не хотим снова определять предыдущие атрибуты и методы.

class Car(Vehicle):
   def __init__(self, color, maxSpeed, brand):
      self.brand = brand

Теперь мы можем получить доступ к переменным и методам родительского класса
Итак, наследование — это способность одного класса получать или наследовать свойства другого класса. Класс, производный от свойств, называется дочерним классом, а класс, из которого получаются свойства, называется родительским классом.

Спасибо за чтение, и давайте подключаться!

Спасибо за чтение моего блога. Не стесняйтесь подписаться на мою рассылку по электронной почте и подключиться к Twitter
Если вам понравилась эта статья! Не пропустите предстоящие, подпишитесь на меня и подпишитесь на мою рассылку новостей, чтобы получать больше!
До скорой встречи :)