Урок 66 — Решения: Основы ООП
⚡ Кратко
Ответы на тестовые вопросы и разбор задач User и Product.
✅ Ответы на задания для закрепления (часть 1)
- Верные утверждения: a, b, d. (Метод — это не поле, а функция внутри класса.)
- Что делает __init__: d. Создаёт (точнее, инициализирует) поля объекта.
- Сопоставление: 1-d, 2-a, 3-b, 4-c.
✅ Ответы на задания для закрепления (часть 2)
- Сопоставление: 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()
Проверить по документации: аннотации типов и стрелочные подсказки возвращаемых значений выходят за рамки исходного материала урока.