Python: задачки и вопросы
7.76K subscribers
1.18K photos
1 video
1 file
88 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Документация Python:

«object.__slots__
...__slots__ резервирует место для объявленных переменных и предотвращает автоматическое создания dict и weakref для каждого экземпляра».

В задаче выше мы «зафиксировали» список атрибутов и не допускаем добавление ape.

Средство слотов задумывалось как способ отлавливания опечаток.
👍5👎1
🪤 Что выведет код?
Anonymous Quiz
26%
{'a': 1, 'b': 2}
19%
{'b': 2}
7%
{}
48%
Error
🤯2👍1👎1
Задача выше тоже относится к теме слотов.

Что происходит:
1. Класс C - пустой базовый класс
2. Класс D наследует от C и имеет __slots__ = ['a'] - это означает, что экземпляры класса D могут иметь только атрибут a
3. X = D() - создается экземпляр класса D
4. X.a = 1 - устанавливается атрибут a (разрешенный слот)
5. X.b = 2 - устанавливается атрибут b (НЕ разрешенный слот)

Почему же в __dict__ только {'b': 2}? Когда вы используете, атрибуты, указанные в __slots__ (в данном случае a) хранятся в специальной структуре данных, а не в __dict__. Атрибуты, НЕ указанные в __slots__ (в данном случае b) хранятся в __dict__ как обычно.
2👍1👎1🤨1
Из документации Python:

«
@staticmethod
Преобразует метод в статический. Такой метод не получает неявного первого аргумента:

class C:
@staticmethod
def f(arg1, arg2, argN): ...

Форма
@staticmethod представляет собой декоратор функции.

Статический метод может быть вызван как для класса (например, C.f()), так и для экземпляра (например, C().f())».

Декораторы позволяют расширять и изменять поведение вызываемых объектов (функций, методов и классов) без постоянного изменения самого вызываемого объекта.
👍1👎1
🧩 Какого типа исключения не существует?
Anonymous Quiz
15%
SystemError
11%
ModuleNotFoundError
26%
StopIteration
48%
Все существуют
1
Из документации Python:

«SystemError: Возникает, когда интерпретатор обнаруживает внутреннюю ошибку, но ситуация не выглядит настолько серьезной, чтобы заставить его потерять всякую надежду».

«ModuleNotFoundError: Подкласс ImportError, который возникает при импорте, когда модуль не может быть найден».

«StopIteration: Вызывается встроенной функцией next() и методом итератора __next__(), чтобы сигнализировать об отсутствии дальнейших созданных итератором элементов».
👍2👎1