Определение классов: ключевое слово class, конструктор __init__

Что такое классы и зачем они нужны? 🤔

Представь, что ты строишь дом. Кирпичи, окна, двери — всё это отдельные элементы. Класс в Python — это чертёж, по которому создаются объекты (как дом по проекту).

🔥 Классы помогают:

  • Группировать логически связанные данные и функции
  • Создавать собственные типы данных
  • Упрощать код через повторное использование
  • Работать с реальными сущностями (Пользователь, Товар, Заказ)
# Простейший класс без функционала
class Dog:
    pass

Создаём первый класс 🐶

Ключевое слово class — начало определения класса. По соглашению PEP 8, имена классов пишутся в CamelCase.

class Car:
    def __init__(self, color, model):
        self.color = color  # Атрибут экземпляра
        self.model = model

    def drive(self):
        print(f"{self.model} поехал!")

💡 self — ссылка на экземпляр класса. Без него методы не смогут работать с данными объекта.

Магия __init__: конструктор класса ✨

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

class Robot:
    def __init__(self, name, power_level=100):
        self.name = name
        self.power = power_level
        self.is_active = False

    def activate(self):
        self.is_active = True
        print(f"{self.name} активирован!")

# Создаём робота
r2d2 = Robot("R2-D2", 85)
r2d2.activate()  # Вывод: R2-D2 активирован!

🧠 Важно: __init__ — это не совсем конструктор в классическом понимании. Настоящий конструктор — метод __new__, но __init__ используется в 99% случаев.

Работа с атрибутами 🛠️

Атрибуты — это переменные, принадлежащие объекту. Их можно: - Добавлять - Изменять - Удалять

class Laptop:
    def __init__(self, brand):
        self.brand = brand

macbook = Laptop("Apple")
print(macbook.brand)  # Apple

# Добавляем новый атрибут динамически
macbook.year = 2020
print(macbook.year)  # 2020

# Меняем значение
macbook.brand = "MacBook Pro"

Практический пример: банковский счёт 💰

Давай создадим класс для работы с банковскими счетами:

class BankAccount:
    def __init__(self, owner, balance=0):
        self.owner = owner
        self.balance = balance
        self.transactions = []

    def deposit(self, amount):
        self.balance += amount
        self.transactions.append(f"Пополнение: +{amount}")
        print(f"Счёт пополнен на {amount}. Текущий баланс: {self.balance}")

    def withdraw(self, amount):
        if amount > self.balance:
            print("Недостаточно средств!")
        else:
            self.balance -= amount
            self.transactions.append(f"Снятие: -{amount}")
            print(f"Снято {amount}. Остаток: {self.balance}")

    def show_transactions(self):
        print("\nИстория операций:")
        for operation in self.transactions:
            print(operation)

# Использование
account = BankAccount("Иван Петров", 1000)
account.deposit(500)  # Счёт пополнен на 500. Текущий баланс: 1500
account.withdraw(200) # Снято 200. Остаток: 1300
account.show_transactions()

Продвинутые фишки 🚀

1. Типизация в Python 3.6+

Можно явно указывать типы атрибутов:

class User:
    def __init__(self, name: str, age: int, is_admin: bool = False):
        self.name = name
        self.age = age
        self.is_admin = is_admin

2. Вычисляемые свойства (@property)

Превращаем метод в атрибут:

class Circle:
    def __init__(self, radius):
        self.radius = radius

    @property
    def area(self):
        return 3.14 * self.radius ** 2

circle = Circle(5)
print(circle.area)  # 78.5 (вызывается без скобок!)

Главное запомнить 🔥

  1. Классы — это шаблоны для создания объектов
  2. __init__ — метод инициализации (не совсем конструктор)
  3. self — ссылка на экземпляр класса
  4. Атрибуты можно добавлять/менять динамически
  5. Классы помогают структурировать сложные программы

Хочешь глубже разобрать тему? Рекомендую видео Данилы Бежина про ООП: https://www.youtube.com/@DanilaBezhin. Там есть отличные примеры!

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

Скрыть рекламу навсегда

🧠 Учёба без воды и зубрёжки

Закрытый Boosty с наработками опытного преподавателя.

Объясняю сложное так, чтобы щелкнуло.

🚀 Забрать доступ к Boosty