ООП расшифровывается как объектно-ориентированное программирование. Эта концепция представляет собой стиль решения задач программирования, когда свойства и поведение реального объекта упакованы в код как единое целое.
Этот стиль программирования обеспечивает модульность и масштабирование при наименьшем количестве проблем.
Недавно мы рассмотрели 30 вопросов с собеседований по теме ООП, а сегодня попробуем разобраться с этим немного глубже.
Python — это динамически типизированный интерпретируемый язык программирования высокого уровня. Python поддерживает несколько понятий ООП, включая следующие:
Класс — это план реальной сущности. В Python он создается с использованием ключевого слова class, как показано в следующем фрагменте кода.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
В приведенном выше примере:
Как только класс Person определен, вы можете использовать его для создания экземпляра, передавая значения, как показано ниже.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
if __name__ == "__main__":
p = Person("Инокент", 23)
print(p.name)
В приведенном выше примере:
Как следует из названия, это концепция о наследовании свойств от существующего объекта. Наследование увеличивает возможность повторного использования кода. Одиночное, множественное и многоуровневое наследование — это лишь немногие из большого числа типов, поддерживаемых Python.
В следующем примере показано, как использовать наследование в Python:
class Person:
def __init__(self):
pass
# Одноуровневое наследование
class Employee(Person):
def __init__(self):
pass
# Многоуровневое наследование
class Manager(Employee):
def __init__(self):
pass
# Множественное наследование
class Enterprenaur(Person, Employee):
def __init__(self):
pass
При множественном наследовании классы наследуются слева направо в круглых скобках, в зависимости от алгоритма Method Resolution Order (MRO).
Это концепция упаковки данных так, что внешний мир имеет доступ только к открытым свойствам. Некоторые свойства могут быть скрыты, чтобы уменьшить уязвимость. Это так называемая реализация сокрытия данных. Например, вы хотите купить брюки с интернет-сайта. Данные, которые вам нужны, это их стоимость и доступность. Количество предметов и их расположение — это информация, которая вас не беспокоит. Следовательно, эта информация скрыта.
В Python это реализуется путем создания private, protected и public переменных и методов экземпляра.
Private свойства имеют двойное подчеркивание (__) в начале, в то время как protected имеют одиночное подчеркивание (_). По умолчанию, все остальные переменные и методы являются public.
Private атрибуты доступны только внутри класса и недоступны для дочернего класса (если он унаследован). Protected доступны внутри класса, но доступны и дочернему классу. Все эти ограничения сняты для public атрибутов.
Следующие фрагменты кода являются примером этой концепции:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def _protected_method(self):
print("protected method")
def __private_method(self):
print("privated method")
if __name__ == "__main__":
p = Person("mohan", 23)
p._protected_method() # покажет предупреждение
p.__private_method() # вбросит Attribute error указав, что этот метод не существует
Это концепция, при которой функция может принимать несколько форм в зависимости от количества аргументов или типа аргументов, переданных функции.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def show_salary(self):
print("Зарплата неизвестна")
class Employee(Person):
def __init__(self, name, age, salary):
super().__init__(name, age)
self.salary = salary
def show_salary(self):
print("Зарплата составляет ", self.salary)
if __name__ == "__main__":
p = Person("y", 23)
x = Employee("x", 20, 100000)
p.show_salary() # Зарплата неизвестна
x.show_salary() # Зарплата составляет 100000
В приведенном выше примере ключевое слово super используется для вызова метода родительского класса. Оба класса имеют метод show_salary. В зависимости от типа объекта, который выполняет вызов этой функции, выходные данные различаются.
Python также имеет встроенные функции, работающие с полиморфизмом. Одним из самых простых примеров является функция print в Python.
print("Привет!", end=" ")
print("Я Инокент")
print(len([1, 2, 3, 4, 5]))
Вывод будет таким:
Привет! Я Инокент
5
В приведенном выше фрагменте кода:
Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…
Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…
В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…
В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…
При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…
В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…