Объектно-ориентированное программирование (ООП) — это подход к разработке программ, который основывается на концепции объектов. Основные принципы ООП:
1. Инкапсуляция
Инкапсуляция — это механизм, который объединяет данные и методы, работающие с этими данными, в единый объект. Доступ к данным объекта ограничивается через методы (геттеры и сеттеры).
Пример кода:
class Person:
def __init__(self, name, age):
self.__name = name # приватное поле
self.__age = age # приватное поле
def get_name(self):
return self.__name
def set_name(self, name):
self.__name = name
# Создание объекта
person = Person("Иван", 30)
print(person.get_name()) # Иван
2. Наследование
Наследование позволяет одному классу (наследнику) перенимать свойства и методы другого класса (родителя). Это помогает переиспользовать код.
Пример кода:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return f"{self.name} говорит: Гав!"
# Создание объекта
dog = Dog("Бобик")
print(dog.speak()) # Бобик говорит: Гав!
3. Полиморфизм
Полиморфизм позволяет использовать один интерфейс для разных типов объектов. Это достигается через переопределение методов.
Пример кода:
class Bird:
def speak(self):
return "Птица издает звук"
class Parrot(Bird):
def speak(self):
return "Попугай говорит: Привет!"
# Пример использования
animals = [Bird(), Parrot()]
for animal in animals:
print(animal.speak())
# Птица издает звук
# Попугай говорит: Привет!
4. Абстракция
Абстракция скрывает детали реализации и показывает только важные для пользователя аспекты объекта. В Python это реализуется через абстрактные классы.
Пример кода:
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
# Создание объекта
rect = Rectangle(10, 5)
print(rect.area()) # 50
Классы: основные понятия
Класс — это шаблон для создания объектов. Объекты — это экземпляры классов, имеющие свои свойства и методы.
Основные понятия:
Атрибуты — переменные, которые принадлежат классу или объекту.
Методы — функции, которые принадлежат классу или объекту.
Конструктор — метод __init__, который вызывается при создании объекта.
Приватные и публичные атрибуты — с помощью _ и __ можно скрывать данные внутри класса.