SmartView · Python | Изучение Python
130 subscribers
373 photos
17 links
📖 Обучение языку программирования Python с самого начала: кратко, интересно и понятно!

📚 Мы стараемся преподавать самое важное в Python, чтобы вас не нагружать.

⚡️ Boost канала: https://t.me/boost/SV_Python

🍀 Желаем приятного изучения!
Download Telegram
AssertionError

Условие в assert не выполнено.

Пример:
x = 10
assert x == 20, "x должен быть 20!" # Упадёт здесь


Как исправить?
· Исправьте логику или проверяйте данные до assert.
👍4
ReferenceError

Использование слабой ссылки (weakref) на уже удалённый объект.

Пример:
import weakref
obj = SomeClass()
ref = weakref.ref(obj)
del obj
ref() # Вернёт None, но может вызвать ReferenceError
👍3👏1
RuntimeError

Общая ошибка в runtime, часто связана с потоками.

Пример:
import threading
threading.Thread(target=lambda: None).start()
threading.Thread(target=lambda: None).start()
# Если поток уже завершён, может быть RuntimeError
👍3👏1
TimeoutError

Операция не завершилась за отведённое время.

Пример:
import socket
socket.settimeout(1)
socket.getaddrinfo("example.com", 80) # Если долго, упадёт
👍4
BlockingIOError

Операция ввода-вывода заблокирована (например, сокет в неблокирующем режиме).

Как исправить?
· Используйте select или асинхронные методы.
👍5
ConnectionError

Общая ошибка подключения (родительский класс для других).

Пример:
import requests
requests.get("http://... .com") # ConnectionError
👍3👏1
BrokenPipeError

Соединение неожиданно разорвано.

Пример:
# Сервер закрыл соединение, а клиент пытается писать
socket.send(b"data") # Может вызвать BrokenPipeError
👍5
ConnectionRefusedError

Сервер отверг подключение.

Пример:
import socket
s = socket.socket()
s.connect(("localhost", 9999)) # Если порт закрыт
👍3👏1
ChildProcessError

Возникает при попытке взаимодействовать с процессом, который уже завершился.

Пример:
import subprocess
subprocess.run("nonexistent-command") # Если команда не найдена
👍4
ProcessLookupError

Процесс с указанным PID не найден.

Пример:
import os
os.kill(999999, 0) # Если процесса нет
👍4
InterruptedError

Системный вызов прерван (например, сигналом SIGINT).

Как исправить?
· Повторите операцию или обработайте прерывание.
👍5
PickleError

Общая ошибка при работе с pickle.

Пример:
import pickle
pickle.loads(b"invalid_data") # Невалидные данные
👍5
PicklingError

Объект не может быть сериализован.

Пример:
import pickle
pickle.dumps(lambda x: x) # Лямбда-функции нельзя сериализовать
👍4👏1
UnpicklingError

Ошибка при распаковке pickle-данных.

Как исправить?
· Проверьте, что данные не повреждены.
👍4👏1
TypeError

Операция применена к объекту неверного типа.

Пример:
"10" + 10  # Нельзя сложить str и int
👍5
from

Не является ошибкой, это синтаксис для перехвата исключений:
try:
1 / 0
except ZeroDivisionError as e:
raise ValueError("Нельзя делить на ноль") from e
👍5
RuntimeError

Общая ошибка времени выполнения.

Пример:
raise RuntimeError("Что-то пошло не так!")
👍5
Перерыв в изучении 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)
🔥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