Перерыв в изучении Python!
Период: с 28 сентября по 6 октября
Благодарим за понимание и продуктивную работу!
–> @SV_Python
👌6
💁♂️ Навигация по постам: (4) — «Объектно-ориентированное программирование»
1. Введение в ООП
1.1 Что такое объектно-ориентированное программирование
1.2 Основные концепции ООП
1.3 Преимущества использования ООП
1.4 Классы и объекты - основные понятия
1.5 Примеры ООП в реальных проектах
2. Классы и объекты
2.1 Создание первого класса в Python
2.2 Конструктор класса init
2.3 Понятие self и его назначение
2.4 Создание объектов (экземпляров класса)
2.5 Атрибуты экземпляра и атрибуты класса
2.6 Доступ к атрибутам через точку
3. Методы класса
3.1 Методы экземпляра
3.2 Методы класса @(@)classmethod
3.3 Статические методы @(@)staticmethod
3.4 Различия между типами методов
3.5 Практическое применение каждого типа
4. Инкапсуляция
4.1 Понятие инкапсуляции
4.2 Публичные атрибуты и методы
4.3 Защищенные атрибуты (_одиночное подчеркивание)
4.4 Приватные атрибуты (__двойное подчеркивание)
4.5 Свойства @(@)property
4.6 Сеттеры и геттеры
5. Наследование
5.1 Базовое наследование классов
5.2 Переопределение методов
5.3 Ключевое слово super()
5.4 Множественное наследование
5.5 Порядок разрешения методов (MRO)
5.6 Абстрактные базовые классы
6. Полиморфизм
6.1 Понятие полиморфизма
6.2 Перегрузка методов
6.3 Переопределение методов
6.4 Утиная типизация (Duck Typing)
6.5 Полиморфизм встроенных функций
7. Магические методы
7.1 Инициализация init и new
7.2 Строковое представление str и repr
7.3 Математические операции add, sub
7.4 Сравнение объектов eq, lt
7.5 Работа с коллекциями len, getitem
7.6 Вызов объектов call
8. Композиция и агрегация
8.1 Отношения между классами
8.2 Композиция (сильная связь)
8.3 Агрегация (слабая связь)
8.4 Наследование vs Композиция
9. Декораторы классов
9.1 Базовые декораторы классов
9.2 Декораторы с параметрами
9.3 Метаклассы type
9.4 Создание собственных метаклассов
9.5 Практическое применение метаклассов
10. Паттерны проектирования
10.1 Одиночка (Singleton)
10.2 Фабрика (Factory)
10.3 Наблюдатель (Observer)
10.4 Стратегия (Strategy)
10.5 Адаптер (Adapter)
10.6 Декоратор (Decorator)
11. Работа с исключениями в ООП
11.1 Создание пользовательских исключений
11.2 Наследование от базовых исключений
11.3 Обработка исключений в методах
11.4 Контекстные менеджеры с классами
11.5 Паттерн "Фабрика исключений"
12. Тестирование ООП кода
12.1 Модуль unittest для тестирования классов
12.2 Mock объекты для тестирования
12.3 Тестирование наследования
12.4 Тестирование приватных методов
12.5 Паттерн "Тестовые дублеры"
13. Продвинутые темы ООП
13.1 Дескрипторы
13.2 Слоты slots
13.3 Абстрактные методы
13.4 Протоколы и интерфейсы
13.5 Миксины (Mixins)
1. Введение в ООП
1.1 Что такое объектно-ориентированное программирование
1.2 Основные концепции ООП
1.3 Преимущества использования ООП
1.4 Классы и объекты - основные понятия
1.5 Примеры ООП в реальных проектах
2. Классы и объекты
2.1 Создание первого класса в Python
2.2 Конструктор класса init
2.3 Понятие self и его назначение
2.4 Создание объектов (экземпляров класса)
2.5 Атрибуты экземпляра и атрибуты класса
2.6 Доступ к атрибутам через точку
3. Методы класса
3.1 Методы экземпляра
3.2 Методы класса @(@)classmethod
3.3 Статические методы @(@)staticmethod
3.4 Различия между типами методов
3.5 Практическое применение каждого типа
4. Инкапсуляция
4.1 Понятие инкапсуляции
4.2 Публичные атрибуты и методы
4.3 Защищенные атрибуты (_одиночное подчеркивание)
4.4 Приватные атрибуты (__двойное подчеркивание)
4.5 Свойства @(@)property
4.6 Сеттеры и геттеры
5. Наследование
5.1 Базовое наследование классов
5.2 Переопределение методов
5.3 Ключевое слово super()
5.4 Множественное наследование
5.5 Порядок разрешения методов (MRO)
5.6 Абстрактные базовые классы
6. Полиморфизм
6.1 Понятие полиморфизма
6.2 Перегрузка методов
6.3 Переопределение методов
6.4 Утиная типизация (Duck Typing)
6.5 Полиморфизм встроенных функций
7. Магические методы
7.1 Инициализация init и new
7.2 Строковое представление str и repr
7.3 Математические операции add, sub
7.4 Сравнение объектов eq, lt
7.5 Работа с коллекциями len, getitem
7.6 Вызов объектов call
8. Композиция и агрегация
8.1 Отношения между классами
8.2 Композиция (сильная связь)
8.3 Агрегация (слабая связь)
8.4 Наследование vs Композиция
9. Декораторы классов
9.1 Базовые декораторы классов
9.2 Декораторы с параметрами
9.3 Метаклассы type
9.4 Создание собственных метаклассов
9.5 Практическое применение метаклассов
10. Паттерны проектирования
10.1 Одиночка (Singleton)
10.2 Фабрика (Factory)
10.3 Наблюдатель (Observer)
10.4 Стратегия (Strategy)
10.5 Адаптер (Adapter)
10.6 Декоратор (Decorator)
11. Работа с исключениями в ООП
11.1 Создание пользовательских исключений
11.2 Наследование от базовых исключений
11.3 Обработка исключений в методах
11.4 Контекстные менеджеры с классами
11.5 Паттерн "Фабрика исключений"
12. Тестирование ООП кода
12.1 Модуль unittest для тестирования классов
12.2 Mock объекты для тестирования
12.3 Тестирование наследования
12.4 Тестирование приватных методов
12.5 Паттерн "Тестовые дублеры"
13. Продвинутые темы ООП
13.1 Дескрипторы
13.2 Слоты slots
13.3 Абстрактные методы
13.4 Протоколы и интерфейсы
13.5 Миксины (Mixins)
Telegram
SmartView · Python | Изучение Python
Что такое объектно-ориентированное программирование?
ООП — это способ писать код, где программа состоит из «объектов», как в реальном мире. Каждый объект имеет свои характеристики и действия.
Пример из жизни:
Представьте машину:
· Характеристики (атрибуты):…
ООП — это способ писать код, где программа состоит из «объектов», как в реальном мире. Каждый объект имеет свои характеристики и действия.
Пример из жизни:
Представьте машину:
· Характеристики (атрибуты):…
🔥3👍1
Что такое объектно-ориентированное программирование?
ООП — это способ писать код, где программа состоит из «объектов», как в реальном мире. Каждый объект имеет свои характеристики и действия.
Пример из жизни:
Представьте машину:
· Характеристики (атрибуты): цвет, марка, скорость
· Действия (методы): ехать, тормозить, сигналить
Код без ООП vs с ООП:
# Без ООП (процедурный подход)
color = "red"
brand = "Toyota"
speed = 0
def drive(car_speed):
return car_speed + 10
def stop(car_speed):
return 0
# С ООП
class Car:
def __init__(self, color, brand):
self.color = color
self.brand = brand
self.speed = 0
def drive(self, acceleration):
self.speed += acceleration
def stop(self):
self.speed = 0
👍4
Основные концепции ООП
1. Инкапсуляция — объединение данных и методов в одном объекте
2. Наследование — создание новых классов на основе существующих
3. Полиморфизм — использование объектов разных классов одинаковым образом
4. Абстракция — скрытие сложной реализации, показ только важных деталей
Простая аналогия:
· Инкапсуляция: Телефон — внутри сложная электроника, но мы пользуемся только кнопками
· Наследование: Смартфон наследует свойства обычного телефона + добавляет новые
· Полиморфизм: Кнопка "позвонить" работает на любом телефоне по-разному, но результат одинаковый
· Абстракция: Нам не нужно знать, как работает процессор, чтобы звонить
👍4
Преимущества использования ООП
· Понятность: Код похож на реальные объекты
· Повторное использование: Классы можно использовать много раз
· Легкость поддержки: Легко находить и исправлять ошибки
· Масштабируемость: Легко добавлять новые функции
Пример преимущества:
# Без ООП — много повторяющегося кода
car1_color = "red"
car1_brand = "Toyota"
car1_speed = 0
car2_color = "blue"
car2_brand = "BMW"
car2_speed = 0
# С ООП — чисто и понятно
car1 = Car("red", "Toyota")
car2 = Car("blue", "BMW")
👍4
Классы и объекты — основные понятия
Класс — это чертеж, объект — готовый продукт
Простая аналогия:
· Класс = Чертеж дома (описание, каким должен быть дом)
· Объект = Построенный дом (реальный экземпляр)
Пример:
# Класс — чертеж собаки
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
return "Гав!"
# Объекты — реальные собаки
my_dog = Dog("Бобик", "Такса") # Первая собака
friends_dog = Dog("Шарик", "Овчарка") # Вторая собака
print(my_dog.name) # Бобик
print(friends_dog.bark()) # Гав!
👍4
Примеры ООП в реальных проектах
Веб-разработка:
# Пользователь на сайте
class User:
def __init__(self, username, email):
self.username = username
self.email = email
self.is_logged_in = False
def login(self):
self.is_logged_in = True
def logout(self):
self.is_logged_in = False
Игры:
# Персонаж игры
class Character:
def __init__(self, name, health):
self.name = name
self.health = health
def attack(self, enemy):
enemy.health -= 10
def heal(self):
self.health += 5
Банковское приложение:
# Банковский счет
class BankAccount:
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
else:
print("Недостаточно средств!")
👍4