🐍 Python  ·  20 вопросов  ·  ~50 мин  ·  ⏱ Таймер 50:00  ·  Средний  ·  👥 2 прошли

Классы и объекты

Проверяет состояние объекта, методы экземпляра, конструктор и различие класса и экземпляра. Внутри — не пересказ терминов, а работа с четырьмя сторонами темы: «Класс и экземпляр», «Атрибуты», «Методы» и «Инициализация». Все задания рассчитаны на CPython 3.12; отличия других реализаций или версий учитываются только там, где это прямо оговорено.

Отвечено: 0 из 20
--:--
0%
💡 Инструкция: Версия: CPython 3.12. Выберите один ответ из четырёх. На 20 вопросов отведено не меньше 40 минут; код лучше читать построчно. После завершения вы увидите общий процент, четыре тематические шкалы и объяснение каждого ответа.
Вопрос 1 из 20
Проследите изменения двух экземпляров. Какие три значения напечатает фрагмент?
Python
class Counter:
    total = 0
    def __init__(self):
        self.value = 0
        Counter.total += 1

a = Counter(); b = Counter(); a.value = 5
print(a.value, b.value, Counter.total)
Вопрос 2 из 20
После присваивания `a.x = 10` какие значения атрибута напечатают экземпляры `a` и `b`?
Python
class A:
    x = 1
a = A(); b = A()
a.x = 10
A.x = 2
print(a.x, b.x)
Вопрос 3 из 20
Функция читается через экземпляр и становится связанным методом. Какие два результата дадут показанные вызовы?
Python
class A:
    def f(self, x): return x + 1
a = A()
print(a.f(2), A.f(a, 2))
Вопрос 4 из 20
В `__init__` допущена ошибка: метод возвращает число. На каком этапе она проявится и каким исключением?
Python
class A:
    def __init__(self):
        return 1
A()
Вопрос 5 из 20
Когда атрибут класса уместнее атрибута экземпляра?
Вопрос 6 из 20
Что выведет изменяемый атрибут класса?
Python
class Bag:
    items = []
a = Bag(); b = Bag(); a.items.append(1)
print(b.items)
Вопрос 7 из 20
Для чего подходит @classmethod?
Вопрос 8 из 20
Что вернёт @staticmethod?
Python
class Math:
    @staticmethod
    def add(a, b): return a + b
print(Math.add(2, 3), Math().add(4, 5))
Вопрос 9 из 20
С учётом атрибута класса `kind` и присваивания `a.x = 1` что именно окажется в `a.__dict__`?
Python
class A:
    kind = "base"
    def __init__(self): self.x = 1
a = A()
print(a.__dict__)
Вопрос 10 из 20
Прямое присваивание позволяет сделать `balance` отрицательным. Какое изменение исправит нарушение инварианта?
Вопрос 11 из 20
Что выведет property?
Python
class C:
    def __init__(self, x): self._x = x
    @property
    def x(self): return self._x * 2
c = C(3)
print(c.x)
Вопрос 12 из 20
Восстановите порядок создания экземпляра. Какие строки напечатают `__new__` и `__init__`?
Python
class A:
    def __new__(cls):
        print("new")
        return super().__new__(cls)
    def __init__(self): print("init")
A()
Вопрос 13 из 20
Почему метод должен использовать `self.value`, а не свободное имя `value`?
Вопрос 14 из 20
Что произойдёт с динамическим атрибутом?
Python
class A: pass
a = A()
a.extra = 5
print(a.extra)
Вопрос 15 из 20
Зачем применять dataclass к простому объекту данных?
Вопрос 16 из 20
Что выведет name mangling?
Python
class A:
    def __init__(self): self.__x = 7
a = A()
print(a._A__x)
Вопрос 17 из 20
Почему объект с десятками публично изменяемых полей часто хрупок?
Вопрос 18 из 20
Что вернёт isinstance?
Python
class A: pass
class B(A): pass
b = B()
print(isinstance(b, A), type(b) is A)
Вопрос 19 из 20
Класс получает внешнюю зависимость. Какое проектное решение позволит легко подменять её в тестах?
Вопрос 20 из 20
Экземпляру класса с `__slots__ = ("x",)` пытаются присвоить новый атрибут `y`. Чем закончится этот граничный сценарий?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe)

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу