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

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

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

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

Другие наши проекты: https://tprg.ru/media
加入频道
Атрибуты экземпляра создаются посредством присваивания значений атрибутам объекта экземпляра. Они обычно создаются в функциях методов класса, реализованных внутри оператора class, с помощью присваивания значений атрибутам аргумента self (который всегда является подразумеваемым экземпляром).

Однако их тоже можно создавать присваиванием везде, где присутствует ссылка на экземпляр, даже за пределами оператора class. Обычно все атрибуты экземпляра инициализируются в методе конструктора __init__ таким образом, более поздние вызовы методов могут предполагать, что атрибуты уже существуют.
👎3👍1
self — это имя, обычно назначаемое первому (крайнему слева) аргументу в функции метода класса, который представляет собой подразумеваемый объект вызова метода. Данный аргумент НЕ обязан называться self.
3👍1👎1
🔍 Какой метод перерузки операций используется чаще всего?
Anonymous Quiz
13%
__add__
15%
__call__
66%
__init__
7%
__getitem__
👎7💩3
Наиболее часто используется метод конструктора __init__ класс применяет этот метод для установки начальных значений атрибутов экземпляра и выполнения других задач начального запуска.
🤡2
Какого значения параметра fill_method в Pandas не существует?
Anonymous Quiz
25%
pad
16%
ffill
13%
zfill
45%
Все существуют
👍2👎1
Параметр fill_method позволяет задавать способ замены значений NaN. Этот параметр присутствует во множестве методов — pct_change, diff, и т.д. У метода fillna() он зовется просто method.

— forward-fill (ffill): «протащить» последнее действительное значение вперед;
— backfill (bfill): использовать следующее действительное наблюдение для заполнения пробела;
— zero-fill (zfill): заполнить пробелы нулями
— None: не обрабатывать пропуски

Важное примечание: существует отдельный метод pandas.DataFrame.pad(), он по умолчанию заливает в пустую ячейку последнее валидное значение.
👍2👎1
Открытый вопрос о качестве задач. В комментариях к этому посту ждем от вас любой критики, конструктивной и не очень.

Что смущает в постановке задач? Хватает ли контекста? Хочется ли более детальных объяснений? Возможно, некоторым тестам не хватает примера кода? За примеры будем отдельно благодарны.

С уважением,
админы
4
Что располагается в нижней части диаграммы?
Anonymous Quiz
48%
Атрибут
21%
Объект.атрибут
15%
Переменная
16%
Ничего
👎7🤨5💩3👍1
В самом низу располагается объект с его атрибутами. Код программы создает дерево объектов в памяти, где будет происходить поиск со стороны наследования атрибутов. Обращение к классу создает новый экземпляр, который запоминает свой класс, выполнение оператора class создает новый класс, а суперклассы перечисляются внутри круглых скобок в заголовке оператора class. Каждая ссылка на атрибут запускает новую процедуру восходящего поиска в дереве - даже ссылки на атрибуты self внутри методов класса.
👍3👎1
🌱 Что помещается в переменную num?
Anonymous Quiz
62%
Замыкание
11%
Генератор
19%
Декоратор
9%
Итератор
👎12👍2
Замыкание (closure) или фабричная функция это функция определяемая и возвращаемая другой функцией, при этом замыкание получает доступ к значениям и объектам в области видимости "родительской" (или объемлющей) функции независимо от того из какой области видимости происходит вызов замыкания.
💊4👎1
Модуль не не поддерживает перегрузку операторов, это возможно только в классах:

class Counter:
def __init__(self, value):
self.value = value
# перегрузка оператора сложения
def __add__(self, other):
return Counter(self.value + other.value)
Абстрактный суперкласс — это класс, который вызывает метод, но не наследует и не определяет его. Он ожидает заполнения метода подклассом. Абстрактные суперклассы часто используются в качестве способа обобщения классов, когда поведение не может быть спрогнозировано до написания кода более специфического подкласса. Объектно-ориентированные фреймворки также применяют их как способ направления на определяемые клиентом настраиваемые операции.

Абстрактный метод - это только объявление метода, без его подробной реализации:


from abc import ABC, abstractmethod

class Animal(ABC):
@abstractmethod
def move(self):
pass

a = Animal()
# TypeError: Can't instantiate abstract class Animal with abstract methods move


class Animal():
@abstractmethod
def move(self):
pass

a = Animal()
🤡3👍21👎1