ru
Feedback
Python: задачки и вопросы

Python: задачки и вопросы

Открыть в Telegram

Вопросы и задачки для подготовки к собеседованиям и прокачки навыков Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media

Больше
7 128
Подписчики
-424 часа
+87 дней
-230 день
Архив постов
photo content

1: Неверно, так как мы генерируем только 3 числа:

- 1
0    1
1    17
2     8
3    22
dtype: int64 
2: неверно, так как мы генерируем только 3 числа

- 2
0    31
1    17
2     8 
dtype: int64 
3: верно, все числа целые, находятся в допустимом диапазоне, их точно 3.

- 3
0    30
1    17
2     8
dtype: int64

🌱 Что может вывести код?
Anonymous voting

photo content

Суперклассы (родительские классы) указываются в скобках после имени класса. Наследование от нескольких суперклассов возможно, и выглядит оно довольно интуитивно:

class Robot(Walkable, Talkable):  # Наследуемся сразу от двух классов
    …
Вы указываете суперклассы класса, перечисляя их внутри круглых скобок в операторе class после имени нового класса. Порядок слева направо, в котором классы перечисляются в круглых скобках, дает порядок слева направо при поиске в иерархии наследования, представленной деревом классов. Следовательно, walk и talk будут доступны объекту r. Поскольку walk и talk в разных вызовах print(), то они разделены разрывом строки.

🌱 Что выведет код?
Anonymous voting

photo content

Объекты a и b указывают на один и тот же экземпляр класса Singleton, поэтому a is b возвращает True. Это стало возможным благодаря специальной логике в методе __new__, который отвечает за создание объекта. В классе Singleton есть класс-переменная _instance, где хранится единственный созданный объект. При первом вызове конструктора Singleton(10) переменная _instance пуста, и __new__ создает новый объект. Этот объект сохраняется в _instance, и далее возвращается. При втором вызове Singleton(20) метод new видит, что _instance уже существует, и возвращает его же, не создавая новый. Таким образом, a и b — это ссылки на один и тот же объект. Метод __init__ при этом всё равно вызывается повторно, и устанавливает self.value = 20, затирая предыдущее значение. Это тонкость: __new__ управляет созданием, а __init__ вызывается каждый раз, даже если объект не создавался заново. Такой шаблон называется синглтон — он гарантирует, что у класса будет только один экземпляр.

class Singleton:
    _instance = None  # Класс-переменная, где будет храниться единственный экземпляр

    def __new__(cls, *args, **kwargs):
        # Этот метод вызывается ПЕРЕД __init__, чтобы создать объект
        if cls._instance is None:
            # Если объект еще не создан — создаем его через стандартный способ
            cls._instance = super().__new__(cls)
        # Если уже создан — просто возвращаем его
        return cls._instance

    def __init__(self, value):
        # Этот метод вызывается КАЖДЫЙ РАЗ, даже если объект уже существует
        self.value = value  # Значение перезаписывается при каждом вызове

# Создаем первый экземпляр
a = Singleton(10)

# Пытаемся создать второй экземпляр с другим значением
b = Singleton(20)

print(a.value)  # 20 — потому что __init__ второй раз перезаписал значение
print(b.value)  # 20 — это тот же объект, что и a, с тем же атрибутом
print(a is b)   # True — это один и тот же объект в памяти

🔍 Что выведет код?
Anonymous voting

photo content

photo content

🔍 В чём разница между встроенными методами __new__ и __init__?
Anonymous voting

Метод __init__ — это так называемый метод-конструктор. Он автоматически вызывается при создании нового экземпляра класса. Основная его цель — инициализация объекта, то есть присваивание значений его атрибутам. Когда ты создаешь новый объект, например:

dog = Dog("Бобик")
Интерпретатор Python выполняет следующие шаги: — Создаётся новый объект класса Dog; — Вызывается метод init, и в него передаются все аргументы, которые мы указали при создании объекта ("Бобик"); — Метод __init__ инициализирует атрибуты объекта (например, устанавливает имя собаки) и может выполнять другие действия, связанные с подготовкой объекта к использованию.

🌱 Что делает метод __init__?
Anonymous voting

В Python, когда ты определяешь метод в классе, первый аргумент по умолчанию называется self. Он указывает на сам объект, экземпляр класса, через который вызывается этот метод. Это соглашение принято для всех методов в классах, включая конструктор init.

class Dog:
    def __init__(self, name):
        self.name = name  # 'self' ссылается на конкретный экземпляр Dog

    def bark(self):
        print(f"{self.name} говорит: Гав!")

dog = Dog("Бобик")
dog.bark()  # Бобик говорит: Гав!

Как создать надёжный софт, который будет работать в любых условиях? 29 апреля в 20:00 МСК на открытом вебинаре вы узнаете, ка
Как создать надёжный софт, который будет работать в любых условиях? 29 апреля в 20:00 МСК на открытом вебинаре вы узнаете, как защитить свой код от проблем, которые могут возникнуть в реальной эксплуатации. А ещё: — Как гарантировать отказоустойчивость приложений. — Подходы к снижению влияния сбоев и ошибок в связанных сервисах. — Основные приемы и инструменты для создания надежных систем. Полезно для разработчиков, QA-инженеров и архитекторов. Открытый урок пройдет в преддверие старта курса «Python Developer. Professional». Все участники получат скидку на обучение. Регистрируйтесь прямо сейчас! Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🌱 Как по умолчанию называется первый аргумент функции?
Anonymous voting

Интерпретатор Python ищет атрибуты в порядке Экземпляр → Класс → Суперклассы, потому что это отражает модель наследования и переопределения в объектно-ориентированном программировании.

Agile в сторону! Доверьте планирование своей жизни IT-колоде Тем более что наши арканы уже приготовили для вас послание. Пере
Agile в сторону! Доверьте планирование своей жизни IT-колоде Тем более что наши арканы уже приготовили для вас послание. Переходите по ссылке, вытаскивайте карту и узнавайте, что вас ждёт сегодня, завтра и в другие дни спринта: https://tprg.ru/QzJI Реклама

В каком порядке интерпретатор ищет атрибут по цепочке классов и объектов?
Anonymous voting