Урок 66 — Решения: Основы ООП

📁 Блок: Python Fundamentals / ООП ⏱️ Время изучения: ~30 мин 🎯 Сложность: Средняя
#class #pass #def #print #return

⚡ Кратко

Ответы на тестовые вопросы и разбор задач User и Product.

✅ Ответы на задания для закрепления (часть 1)

  1. Верные утверждения: a, b, d. (Метод — это не поле, а функция внутри класса.)
  2. Что делает __init__: d. Создаёт (точнее, инициализирует) поля объекта.
  3. Сопоставление: 1-d, 2-a, 3-b, 4-c.

✅ Ответы на задания для закрепления (часть 2)

  1. Сопоставление: 1-d, 2-a, 3-b, 4-c.

✅ Решение: класс User

class User:
    def __init__(self, username: str, email: str) -> None:
        self.username = username
        self.email = email
        self.login_count = 0

    def show_info(self) -> None:
        print("-" * 30)
        print("Пользователь:", self.username)
        print("Почта:", self.email)
        print("-" * 30)

    def login(self) -> None:
        self.login_count += 1
        print(f"{self.username} вошёл в систему")

    def get_logins(self) -> int:
        return self.login_count


user = User("alice", "alice@example.com")
user.show_info()
user.login()
user.login()
print("Количество входов:", user.get_logins())

✅ Решение: класс Product

class Product:
    def __init__(self, name: str, price: float) -> None:
        self.name = name
        self.price = price

    def apply_discount(self, percent: float) -> None:
        print(f"Применяем скидку {percent}%")
        self.price -= self.price * percent / 100

    def info(self) -> None:
        print(f"Название: {self.name}")
        print(f"Цена: {self.price}")


p = Product("Молоко", 120)
p.info()
p.apply_discount(25)
p.info()

Проверить по документации: аннотации типов и стрелочные подсказки возвращаемых значений выходят за рамки исходного материала урока.