Вопросы по декораторам
Вопрос 1.1. Что произойдёт при выполнении кода?
def decorator(func):
def wrapper(x):
print("Аргумент:", x)
return func(x)
return wrapper
@decorator
def square(n):
return n * n
print(square(4))
- Выводится только результат "16".
- Выводится результат "16" и "Аргумент: 4".
- Выводится "Аргумент: 4" и результат "16".
- Выводится только "Аргумент: 4".
Вопрос 1.2. Что выведет код?
def decorator(func):
def wrapper():
func()
return wrapper
@decorator
def function():
"""Исходная функция"""
pass
print(function.__name__)
print(function.__doc__)
'wrapper', None'wrapper', 'Исходная функция''function', None'function', 'Исходная функция'
Вопрос 1.3. Что делает следующий декоратор?
def retry(func):
def wrapper():
for _ in range(3):
try:
return func()
except Exception:
continue
return wrapper
Ответьте словами.
Вопрос 1.4. Какой порядок применения декораторов?
@A
@B
def f():
pass
- Сначала применяется A, потом B.
- Сначала применяется B, потом A.
Вопрос 1.5. Что верно о декораторе с аргументами?
- Возвращает другую функцию-декоратор.
- Использует
@wrapsвнутри первой функции. - Должен вызывать декорируемую функцию внутри.
- Работает только с функциями без параметров.
Вопрос 1.6. Укажите ошибку в этом декораторе:
def decorator(func):
def wrapper(*args, **kwargs):
print("Ошибка")
return func
return wrapper
Вопросы по ООП
Вопрос 2.1. Что будет выведено?
class Book:
def __init__(self, book_name):
self.title = book_name
book = Book("1984")
print(book.title)
book_name1984title- Ошибка
Вопрос 2.2. Укажите, что подходит под определение «поле объекта»:
- Значение, сохранённое в классе.
- Значение, сохранённое в объекте через
self. - Имя класса.
- Аргумент конструктора, не сохранённый в объекте.
Вопрос 2.3. Что можно отнести к атрибутам объекта?
- Только поля.
- Только методы.
- Поля и методы.
Вопрос 2.4. Найдите ошибку в коде:
class Person:
def __init__(name, age):
self.name = name
self.age = age
Вопрос 2.5. Найдите ошибку в коде:
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
book = Book
print(book.title)
Вопрос 2.6. Какое утверждение является верным?
- Метод
__init__вызывается вручную при создании объекта. - Все объекты класса обязательно имеют одинаковые значения полей.
- Поля объекта доступны только внутри
__init__. - Объекты одного класса могут хранить разные значения полей.
Практическое задание
Задание. Создайте класс Circle, описывающий окружность.
- У каждого объекта должно быть поле
radius. - Добавьте метод
get_area()для вычисления площади. - Создайте окружность и выведите её площадь.
- Измените радиус и снова выведите площадь.
Пример вывода:
Площадь: 78.5
Новая площадь: 201.0