1. Определение класса и объекта:
```python
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print(f"Привет, {self.name}!")
p = Person("Аня")
p.greet()
```
2. Наследование:
```python
class Animal:
def speak(self):
print("Звук")
class Dog(Animal):
def speak(self):
print("Гав")
d = Dog()
d.speak()
```
3. Инкапсуляция и скрытые поля:
```python
class Secret:
def __init__(self):
self._code = 123
self.__hidden = "секрет"
```
1. Создайте класс `Car` с атрибутами `brand`, `model` и методом `drive()`.
2. Реализуйте класс `Student`, содержащий метод подсчёта среднего балла.
3. Создайте иерархию `Shape -> Rectangle, Circle`, реализуйте метод `area()`.
4. Напишите класс `BankAccount` с методами `deposit()` и `withdraw()`.
1. Напишите класс `Vector`, реализуйте операцию сложения через `__add__`.
2. Реализуйте класс `Book`, переопределите метод `__str__` для красивого вывода.
3. Создайте класс `User`, который при входе выводит приветствие, а при выходе — прощание.
4. Реализуйте защищённый доступ к внутреннему полю (через геттер/сеттер).
1. Что такое класс и объект?
2. Зачем используется `__init__()`?
3. В чём разница между наследованием и полиморфизмом?
4. Какие бывают уровни доступа к атрибутам?
5. Что такое магические методы и зачем они нужны?