""" Урок 66. Основы ООП — весь код примеров одним файлом. Источник: subjects/python-fundamentals/course/lessons/66-oop-basics/examples.html Файл собран автоматически (tools/build_lesson_examples.py): правьте страницу урока. Запуск: python lesson-66.py """ # ==================================================================== # 💻 Пример 1. Пустой класс # ==================================================================== class EmptyClass: pass obj = EmptyClass() print(obj) # <__main__.EmptyClass object at 0x...> # ==================================================================== # 💻 Пример 2. Класс Book с __init__ # ==================================================================== class Book: def __init__(self, title: str, author: str) -> None: self.title = title self.author = author book1 = Book("1984", "George Orwell") book2 = Book("Brave New World", "Aldous Huxley") print(book1.title, book1.author) print(book2.title, book2.author) # ==================================================================== # 💻 Пример 3. Доступ к полям и их изменение # ==================================================================== class Book: def __init__(self, title: str, author: str) -> None: self.title = title self.author = author book = Book("1984", "George Orwell") print(book.title) # 1984 print(book.author) # George Orwell book.title = "Animal Farm" print(book.title) # Animal Farm # ==================================================================== # 💻 Пример 4. Методы класса # ==================================================================== class Book: def __init__(self, title: str, author: str) -> None: self.title = title self.author = author def get_description(self) -> str: return f"{self.title} — {self.author}" def show_info(self) -> None: print(self.get_description()) def make_author_upper(self) -> None: self.author = self.author.upper() book = Book("1984", "George Orwell") book.show_info() # 1984 — George Orwell book.make_author_upper() # меняем поле author book.show_info() # 1984 — GEORGE ORWELL # ==================================================================== # 💻 Пример 5. Счётчик входов (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()) # ==================================================================== # 💻 Пример 6. Скидка на товар (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()