uk
Feedback
Python | Вопросы собесов

Python | Вопросы собесов

Відкрити в Telegram

📈 Аналітичний огляд Telegram-каналу Python | Вопросы собесов

Канал Python | Вопросы собесов (@python_easy_ru) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 13 100 підписників, посідаючи 9 746 місце в категорії Технології та додатки та 50 691 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 13 100 підписників.

За останніми даними від 11 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -60, а за останні 24 години на -4, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 9.30%. Протягом перших 24 годин після публікації контент зазвичай збирає 5.54% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 1 219 переглядів. Протягом першої доби публікація в середньому набирає 726 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 3.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як ставь, модуль, строка, docker, alice.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

Завдяки високій частоті оновлень (останні дані отримано 12 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

13 100
Підписники
-424 години
-177 днів
-6030 день
Архів дописів
Что известно про init ? Спросят с вероятностью 3% Метод init является специальным методом (часто называемым "магическим методом"), который используется для инициализации новых объектов класса. Он выполняется автоматически при создании нового экземпляра класса. Зачем он нужен ? Метод init нужен для задания начального состояния объекта. С его помощью можно передать начальные значения атрибутам объекта при его создании. Как его использовать ? Определяется внутри класса. Его первым параметром всегда является self, который представляет собой сам объект. Остальные параметры могут быть любыми и задаются при создании объекта. Пример:
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# Создание экземпляра класса Person
person1 = Person("Alice", 30)
print(person1.name)  # Выведет: Alice
print(person1.age)   # Выведет: 30
Почему это так важно? 1️⃣Инициализация атрибутов: init позволяет задать начальные значения атрибутам объекта, что делает объект полнофункциональным сразу после создания. 2️⃣Гибкость: Можно задавать различные параметры при создании объекта, что позволяет создавать объекты с разными начальными состояниями. 3️⃣Чистота кода: init делает код более читаемым и понятным, так как инициализация объектов происходит в одном месте. Рассмотрим более сложный пример:
class Car:
    def __init__(self, brand, model, year):
        self.brand = brand
        self.model = model
        self.year = year

    def display_info(self):
        print(f"{self.brand} {self.model}, {self.year}")

# Создание экземпляров класса Car
car1 = Car("Toyota", "Corolla", 2020)
car2 = Car("Honda", "Civic", 2019)

car1.display_info()  # Выведет: Toyota Corolla, 2020
car2.display_info()  # Выведет: Honda Civic, 2019
В этом примере метод init задает марку, модель и год выпуска автомобиля. Метод display_info выводит информацию об автомобиле. Метод init используется для инициализации новых объектов класса. Он позволяет задавать начальные значения атрибутов, делая объекты готовыми к использованию сразу после их создания. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Как джуну без опыта составить себе крутое резюме? Просто скачай наш гайд с 5 примерами реальных резюмешек ребят, которые неда
Как джуну без опыта составить себе крутое резюме? Просто скачай наш гайд с 5 примерами реальных резюмешек ребят, которые недавно нашли работу. В этом гайде рассказали как: 1. Оформить свой опыт, даже если его нет. 2. Добавили 5 крутых примеров настоящих резюме junior разработчиков без опыта, которые нашли работу. А писала этот гайд команда, которая трудоустроила уже больше 150 джунов! Меняем его на подписку на канал 😊 👉 Скачать можно бесплатно по этой ссылочке.

🤔 Что такое list comprehension в Python и для чего оно используется?
Anonymous voting

Как реализовать класс, объект которого может работать в менеджере контекста ? Спросят с вероятностью 3% Для того чтобы класс мог использоваться в менеджере контекста (в конструкции with), он должен реализовать методы __enter__ иак реализо Эти методы управляют инициализацией и завершением контекста, соответственно. Рассмотрим пример класса, который открывает и закрывает файл:
class FileManager:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode
        self.file = None

    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_value, traceback):
        if self.file:
            self.file.close()

# Использование класса FileManager в конструкции with
with FileManager('example.txt', 'w') as file:
    file.write('Hello, world!')

# После выхода из блока with файл будет закрыт автоматически
Объяснение
1️⃣
Конструктор
elf.file.cl
✅Принимает имя файла и режим его открытия. ✅Инициализирует атрибут file значением None. 2️⃣Метод enter: ✅Открывает файл и сохраняет его объект в атрибут file. ✅Возвращает объект файла, чтобы он мог быть использован в блоке with. 3️⃣Метод exit: ✅Закрывает файл, если он был успешно открыт. ✅Принимает три аргумента (exc_type, exc_value, traceback), которые используются для обработки исключений. Если в блоке with возникло исключение, эти аргументы содержат информацию о нем. Обработка исключений Метод exit может обрабатывать исключения, возникшие в блоке with. Если метод возвращает True, исключение подавляется и не передается дальше. Если метод возвращает False (или ничего не возвращает), исключение передается дальше. Пример с обработкой исключений
class FileManager:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode
        self.file = None

    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_value, traceback):
        if self.file:
            self.file.close()
        if exc_type is not None:
            print(f"An exception occurred: {exc_value}")
            return True  # Подавляет исключение

# Использование класса FileManager с исключением
try:
    with FileManager('example.txt', 'w') as file:
        file.write('Hello, world!')
        raise ValueError("An intentional error")
except ValueError:
    print("ValueError caught")

# После выхода из блока with файл будет закрыт автоматически
Объяснение: ✅Если в блоке with возникает исключение, метод exit обрабатывает его, выводит сообщение и возвращает True, что подавляет исключение и не передает его дальше. ✅Блок try позволяет убедиться, что исключение обработано правильно. Чтобы класс мог работать в менеджере контекста (в конструкции with), необходимо реализовать методыает True, чиак реализо Методализовать кинициализирует ресурс и возвращает его, чтобы он мог быть использован в блоке with. Методероятностьосвобождает ресурс и может обрабатывать исключения, возникающие в блоке with. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

🤔 Какая библиотека Python обычно используется для работы с векторными и матричными операциями?
Anonymous voting

Как сделать класс, который будет поддерживать протокол итератора ? Спросят с вероятностью 3% Чтобы сделать класс, который поддерживает протокол итератора, нужно реализовать два метода: __iter__() и __next__(). Метод __iter__() должен возвращать сам итератор (обычно это сам объект), а метод __next__() должен возвращать следующий элемент последовательности или выбрасывать исключение StopIteration, когда элементы заканчиваются. Вот пример класса, который реализует протокол итератора:
class MyRange:
    def __init__(self, start, end):
        self.start = start
        self.end = end
        self.current = start

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.end:
            current = self.current
            self.current += 1
            return current
        else:
            raise StopIteration

# Использование класса MyRange
my_range = MyRange(1, 5)

for number in my_range:
    print(number)  # Выведет: 1 2 3 4
Объяснение 1️⃣Конструктор __init__: ✅Инициализирует начальное значение (start), конечное значение (end) и текущее значение (current), которое будет изменяться при итерации. 2️⃣Метод iter: ✅Возвращает сам итератор, то есть self. 3️⃣Метод next: ✅Проверяет, достигло ли текущее значение (self.current) конечного значения (self.end). ✅Если текущее значение меньше конечного, метод увеличивает текущее значение на 1 и возвращает предыдущее текущее значение. ✅Если текущее значение больше или равно конечному, выбрасывается исключение StopIteration. Можно также создать более сложный итератор, например, для перебора элементов списка.
class MyListIterator:
    def init(self, my_list):
        self.my_list = my_list
        self.index = 0

    def iter(self):
        return self

    def next():
        if self.index < len(self.my_list):
            result = self.my_list[self.index]
            self.index += 1
            return result
        else:
            raise StopIteration

# Использование класса MyListIterator
my_list = [10, 20, 30, 40]
my_iterator = MyListIterator(my_list)

for item in my_iterator:
    print(item)  # Выведет: 10 20 30 40
Обработка итераций с вложенными циклами Иногда может потребоваться использовать итератор в контексте вложенных циклов или других структур. В этом случае итератор должен поддерживать повторное использование.
class ResettableRange:
    def __init__(self, start, end):
        self.start = start
        self.end = end
        self.current = start

    def __iter__(self):
        self.current = self.start  # Сброс текущего значения при начале новой итерации
        return self

    def __next__(self):
        if self.current < self.end:
            current = self.current
            self.current += 1
            return current
        else:
            raise StopIteration

# Использование класса ResettableRange
resettable_range = ResettableRange(1, 5)

# Первый цикл
for number in resettable_range:
    print(number)  # Выведет: 1 2 3 4

# Второй цикл
for number in resettable_range:
    print(number)  # Снова выведет: 1 2 3 4
Чтобы создать класс, поддерживающий протокол итератора, нужно реализовать методы iter() и next(). Метод iter() возвращает сам итератор, а метод next() возвращает следующий элемент или выбрасывает StopIteration, когда элементы заканчиваются. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

🤔 Какой механизм в Python позволяет управлять доступом к атрибутам объекта извне?
Anonymous voting

Карьерный буст для DWH-разработчиков 👨‍💻 Есть опыт работы от года и желание выйти на новый уровень? На интенсиве в Открытых
Карьерный буст для DWH-разработчиков 👨‍💻 Есть опыт работы от года и желание выйти на новый уровень? На интенсиве в Открытых школах Т1 ты прокачаешь скилы и сможешь попасть в сильную ИТ-команду 🔝 Т1 признан крупнейшей ИТ-компанией в России по версии RAEX 2023, в портфеле 70+ востребованных продуктов и услуг, которые развивают уже 23 000+ ИТ-профессионалов, и мы всегда в поиске новых талантов. Лучшие из выпускников бесплатного интенсива получат оффер в команды разработки финтех-решений, ИТ-продуктов, облачных сервисов, развития ИИ-решений, интеграции и консалтинга, а также уникальный карьерный фаст-трек до мидла. ⌛️ Быстрое обучение: 1 месяц. 💻Гибкий формат: все этапы онлайн, занятия по вечерам. Покоряй бигтех — подай заявку до 24 июля!  Старт интенсива — 29 июля. Реклама. ООО "Т1". ИНН 7720484492.

Как создать итератор из коллекции ? Спросят с вероятностью 3% Итератор — это объект, который позволяет перебирать элементы коллекции один за другим. Он реализует метод __next__(), который возвращает следующий элемент коллекции или вызывает исключение StopIteration, если элементы коллекции закончились. Рассмотрим простой пример с использованием списка:
# Создание списка
my_list = [1, 2, 3, 4, 5]

# Создание итератора из списка
my_iterator = iter(my_list)

# Перебор элементов с помощью итератора
print(next(my_iterator))  # Выведет: 1
print(next(my_iterator))  # Выведет: 2
print(next(my_iterator))  # Выведет: 3
print(next(my_iterator))  # Выведет: 4
print(next(my_iterator))  # Выведет: 5

# Следующий вызов next() вызовет исключение StopIteration
# print(next(my_iterator))  # StopIteration
Итераторы можно создавать из различных коллекций, таких как строки, кортежи, множества и словари. Примеры: С строкой
my_string = "hello"
my_iterator = iter(my_string)

print(next(my_iterator))  # Выведет: h
print(next(my_iterator))  # Выведет: e
print(next(my_iterator))  # Выведет: l
print(next(my_iterator))  # Выведет: l
print(next(my_iterator))  # Выведет: o
С кортежем
my_tuple = (10, 20, 30)
my_iterator = iter(my_tuple)

print(next(my_iterator))  # Выведет: 10
print(next(my_iterator))  # Выведет: 20
print(next(my_iterator))  # Выведет: 30
С множеством
my_set = {1, 2, 3}
my_iterator = iter(my_set)

print(next(my_iterator))  # Выведет один из элементов множества (порядок не гарантирован)
print(next(my_iterator))  # Выведет другой элемент множества
print(next(my_iterator))  # Выведет оставшийся элемент множества
Со словарём
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_iterator = iter(my_dict)

print(next(my_iterator))  # Выведет: a
print(next(my_iterator))  # Выведет: b
print(next(my_iterator))  # Выведет: c
Создание пользовательского итератора Вы также можете создать собственный итератор, определив методы __iter__() и __next__() в своем классе. Пример пользовательского итератора
class MyIterator:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.end:
            self.current += 1
            return self.current - 1
        else:
            raise StopIteration

# Использование пользовательского итератора
my_iter = MyIterator(1, 5)

for num in my_iter:
    print(num)  # Выведет: 1 2 3 4
Для создания итератора из коллекции используйте функцию iter(). Итераторы позволяют перебирать элементы коллекции один за другим с помощью метода next(). Вы также можете создать собственный итератор, реализовав методы __iter__() и __next__() в своем классе. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

🤔 Какой декоратор в Python используется для определения статического метода в классе?
Anonymous voting

– Помощь с pet-проектом – Составление roadmap – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это
– Помощь с pet-проектом – Составление roadmap – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT. 🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию

Какие типы полиморфизма есть в python ? Спросят с вероятностью 3% Полиморфизм — это способность функции, метода или объекта работать с разными типами данных. Основные виды полиморфизма включают: 1️⃣Полиморфизм подтипов (или полиморфизм наследования) 2️⃣Полиморфизм перегрузки (или параметрический полиморфизм) 1️⃣Полиморфизм утиной типизации (или полиморфизм по интерфейсу) Полиморфизм подтипов (наследование) Этот тип позволяет использовать объект любого класса, который является подклассом базового класса. Это достигается с помощью наследования. Метод, определенный в базовом классе, может быть переопределен в подклассах. Пример
class Animal:
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        return "Bark"

class Cat(Animal):
    def make_sound(self):
        return "Meow"

def make_animal_sound(animal):
    print(animal.make_sound())

# Использование полиморфизма подтипов
dog = Dog()
cat = Cat()

make_animal_sound(dog)  # Выведет: Bark
make_animal_sound(cat)  # Выведет: Meow
Полиморфизм перегрузки (параметрический полиморфизм) Нет явной поддержки перегрузки функций и методов, как в некоторых других языках программирования. Однако, параметрический полиморфизм можно достичь через использование аргументов с значениями по умолчанию, переменным количеством аргументов, а также с помощью таких структур данных, как списки и словари. Пример
def add(a, b):
    return a + b

print(add(1, 2))         # Выведет: 3 (работает с числами)
print(add("Hello, ", "World!"))  # Выведет: Hello, World! (работает со строками)
В этом примере функция add работает с разными типами данных благодаря динамической типизации в Python. Полиморфизм утиной типизации (по интерфейсу) Основывается на принципе "Если это выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, утка". Это означает, что не важно, к какому классу принадлежит объект, главное, чтобы он имел нужные методы или атрибуты. Пример
class Duck:
    def quack(self):
        return "Quack"

class Person:
    def quack(self):
        return "I can imitate a duck"

def make_it_quack(duck_like):
    print(duck_like.quack())

duck = Duck()
person = Person()

make_it_quack(duck)   # Выведет: Quack
make_it_quack(person) # Выведет: I can imitate a duck
Полиморфизм функций высшего порядка Можно также применять полиморфизм с функциями высшего порядка — функциями, которые принимают другие функции в качестве аргументов или возвращают функции в качестве результата. Пример
def apply_function(func, value):
    return func(value)

def square(x):
    return x * x

def double(x):
    return x * 2

print(apply_function(square, 4))  # Выведет: 16
print(apply_function(double, 4))  # Выведет: 8
1️⃣Полиморфизм подтипов: Использование объектов подклассов через базовый класс. 2️⃣Полиморфизм перегрузки: Функции и методы могут работать с разными типами данных, хотя явной перегрузки в Python нет. 3️⃣Полиморфизм утиной типизации: Объекты используются на основе наличия необходимых методов или атрибутов, независимо от их класса. 4️⃣Функции высшего порядка: Функции, принимающие или возвращающие другие функции, могут работать с разными типами функций. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Что такое абстракция ? Спросят с вероятностью 3% Абстракция — это одна из основных концепций объектно-ориентированного программирования (ООП), наряду с инкапсуляцией, наследованием и полиморфизмом. Позволяет создавать упрощенные модели сложных систем, выделяя только те аспекты, которые являются важными для конкретной задачи, и скрывая детали реализации. Основные аспекты 1️⃣Скрытие деталей реализации: Позволяет скрыть сложные детали реализации и показать только те части объекта, которые необходимы для его использования. 2️⃣Определение интерфейсов: Фокусируется на определении интерфейсов и методов, которые могут быть использованы для взаимодействия с объектом. 3️⃣Упрощение взаимодействия: Упрощает взаимодействие с объектами, предоставляя простой и понятный интерфейс. Абстракцию можно реализовать с помощью абстрактных классов и методов. Абстрактный класс определяет интерфейс для группы подклассов, но сам не предназначен для создания экземпляров. Для создания абстрактных классов и методов в Python используется модуль abc (Abstract Base Classes). Пример:
from abc import ABC, abstractmethod

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

class Dog(Animal):
    def make_sound(self):
        return "Bark"

class Cat(Animal):
    def make_sound(self):
        return "Meow"

# Создание экземпляров конкретных классов
dog = Dog()
cat = Cat()

print(dog.make_sound())  # Выведет: Bark
print(cat.make_sound())  # Выведет: Meow

# Попытка создания экземпляра абстрактного класса приведет к ошибке
# animal = Animal()  # TypeError: Can't instantiate abstract class Animal with abstract methods make_sound
Основные компоненты 1️⃣Абстрактный класс (Animal): Определяет общие методы, которые должны быть реализованы в подклассах. 2️⃣Абстрактный метод (make_sound): Объявляется в абстрактном классе и должен быть реализован в любом конкретном подклассе. 3️⃣Конкретные классы (Dog и Cat): Реализуют абстрактный метод, предоставляя конкретную реализацию. Преимущества 1️⃣Упрощение разработки: Позволяет сосредоточиться на высокоуровневом дизайне, не отвлекаясь на детали реализации. 2️⃣Повышение гибкости: Изменения в реализации могут быть сделаны без изменения интерфейсов, что облегчает модификацию и расширение кода. 3️⃣Улучшение читаемости: Абстрактные классы и методы делают код более понятным и структурированным, четко показывая, какие методы должны быть реализованы в подклассах. Абстракция в ООП позволяет скрывать сложные детали реализации, предоставляя простой интерфейс для взаимодействия с объектами. Она упрощает разработку, улучшает читаемость кода и повышает его гибкость. Можно реализовать с помощью абстрактных классов и методов, используя модуль abc. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Какая разница между методами str и repr ? Спросят с вероятностью 3% Методы __str__ и repr используются для получения строкового представления объекта, но они имеют разные цели и используются в разных контекстах. Метод str Цель: Должен возвращать строковое представление объекта, которое будет понятным и удобным для пользователя. ✅Использование: Метод str используется функцией str() и при вызове print(). ✅Предназначение: Для более дружественного и читаемого представления объекта. Метод repr Цель: Должен возвращать строку, которая официально представляет объект и, по возможности, позволяет воссоздать объект, если передать эту строку в eval(). ✅Использование: Метод repr используется функцией repr() и вызывается интерактивной оболочкой Python для отображения объектов. ✅Предназначение: Для более точного и детализированного представления объекта, предназначенного для разработчиков. Пример
class MyClass:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return f"MyClass with value {self.value}"

    def __repr__(self):
        return f"MyClass({self.value})"

obj = MyClass(10)

# Использование_(self):
print(str(obj))  # Выведет: MyClass with value 10
print(obj)       # Выведет: MyClass with value 10 (так как print вызывает str)

# Использование
repr
print(repr(obj)) # Выведет: MyClass(10)
Основные различия 1️⃣Контекст использования: ✅__str__ предназначен для удобного представления объекта пользователю. ✅__repr__ предназначен для официального представления объекта, полезного для отладки и разработки. 2️⃣Вызываемые функции: ✅str() и print() используют str.repr() и интерактивная оболочка Python используют repr. 3️⃣Содержимое строки: ✅__str__ возвращает удобочитаемую строку. ✅__repr__ возвращает строку, которая может включать больше технической информации и может использоваться для воссоздания объекта. Пример с реализацией обоих методов
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"Point({self.x}, {self.y})"

    def __repr__(self):
        return f"Point({self.x}, {self.y})"

p = Point(1, 2)

# Использование
str
print(str(p))  # Выведет: Point(1, 2)
print(p)       # Выведет: Point(1, 2)

# Использование
repr
print(repr(p)) # Выведет: Point(1, 2)
Дополнительный пример с различием междуstr__ и _и repr
class ComplexNumber:
    def __init__(self, real, imag):
        self.real = real
        self.imag = imag

    def __str__(self):
        return f"{self.real} + {self.imag}i"

    def __repr__(self):
        return f"ComplexNumber({self.real}, {self.imag})"

c = ComplexNumber(3, 4)

# Использование
str
print(str(c))  # Выведет: 3 + 4i
print(c)       # Выведет: 3 + 4i

# Использование
_ и repr и
print(repr(c)) # Выведет: ComplexNumber(3, 4)
Метод str возвращает понятное для пользователя строковое представление объекта, используемое функцией str() и print(). Метод repr возвращает официальное строковое представление объекта, используемое функцией repr() и интерактивной оболочкой, и часто предназначен для отладки. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

🤔 Какой декоратор из списка связан с многопоточностью?
Anonymous voting

Какой из этих двух классов вызывается первым ? Спросят с вероятностью 3% Вопрос о том, какой из двух классов вызывается первым, предполагает ситуацию с наследованием и порядком вызова конструкторов (или методов) в иерархии классов. Порядок вызова конструкторов и методов определяется в первую очередь методом разрешения порядка (MRO — Method Resolution Order). Это правило особенно важно в случае множественного наследования. Рассмотрим пример с двумя классами, где один наследуется от другого:
class A:
    def __init__(self):
        print("Constructor of A")

class B(A):
    def __init__(self):
        print("Constructor of B")
        super().__init__()

# Создание экземпляра класса B
b = B()
Порядок вызова 1️⃣Когда создается объект класса B, сначала вызывается его конструктор __init__. 2️⃣Внутри конструктора B вызов super().__init__() вызывает конструктор базового класса A. Вывод программы будет:
Constructor of B
Constructor of A
Это означает, что сначала вызывается конструктор B, а затем конструктор A. Метод разрешения порядка (MRO, Method Resolution Order) Определяет порядок, в котором классы будут обрабатываться при наследовании. В Python этот порядок можно получить с помощью атрибута mro или функции mro(). Пример:
print(B.__mro__)
Вывод будет:
(<class '__main__.B'>, <class '__main__.A'>, <class 'object'>)
Это означает, что порядок разрешения методов для класса B следующий: 1️⃣B 2️⃣A 3️⃣object При множественном наследовании MRO становится еще важнее. Рассмотрим пример:
class A:
    def __init__(self):
        print("Constructor of A")

class B(A):
    def __init__(self):
        print("Constructor of B")
        super().__init__()

class C(A):
    def __init__(self):
        print("Constructor of C")
        super().__init__()

class D(B, C):
    def __init__(self):
        print("Constructor of D")
        super().__init__()

# Создание экземпляра класса D
d = D()
Порядок вызова Когда создается объект класса D, вызовы конструкторов происходят в соответствии с MRO для D. Получение:
print(D.__mro__)
Вывод будет:
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)
Вывод программы будет:
Constructor of D
Constructor of B
Constructor of C
Constructor of A
Это означает, что порядок вызова конструкторов следующий: 1️⃣D 2️⃣B 3️⃣C 4️⃣A При создании объекта класса сначала вызывается конструктор самого класса, затем конструкторы его базовых классов в порядке, определенном MRO. В случае множественного наследования порядок вызова конструкторов определяется методом разрешения порядка (MRO). 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

👩‍💻Хотите улучшить свои навыки python? На канале программистика вы найдёте: 👀Огромную библиотеку книг 👀Уроки по python 👀
👩‍💻Хотите улучшить свои навыки python? На канале программистика вы найдёте: 👀Огромную библиотеку книг 👀Уроки по python 👀Фундаментальные статьи 👀Полезные библиотеки и методы python 👍Подписывайся и развивайся!!!!

🤔 Что делает ключевое слово `yield` в Python?
Anonymous voting

Чем отличается атрибут класса от атрибута метода ? Спросят с вероятностью 3% Важно различать атрибуты класса и атрибуты экземпляра, так как они управляют различными аспектами хранения данных и поведения объектов. Атрибуты класса (class attributes) Принадлежат самому классу и одинаковы для всех экземпляров этого класса. Они объявляются внутри класса, но вне каких-либо методов. Эти атрибуты могут быть доступны как через сам класс, так и через его экземпляры. Пример:
class MyClass:
    class_attr = 42  # Атрибут класса

    def __init__(self, value):
        self.instance_attr = value  # Атрибут экземпляра

    def instance_method(self):
        return f"Instance attribute: {self.instance_attr}"

    @classmethod
    def class_method(cls):
        return f"Class attribute: {cls.class_attr}"

# Доступ к атрибуту класса через класс
print(MyClass.class_attr)  # Выведет: 42

# Создание экземпляра класса
obj1 = MyClass(10)
obj2 = MyClass(20)

# Доступ к атрибуту класса через экземпляры
print(obj1.class_attr)  # Выведет: 42
print(obj2.class_attr)  # Выведет: 42

# Изменение атрибута класса
MyClass.class_attr = 100
print(obj1.class_attr)  # Выведет: 100
print(obj2.class_attr)  # Выведет: 100
Атрибуты экземпляра (instance attributes) Принадлежат конкретному объекту (экземпляру) класса. Они обычно инициализируются в методе __init__ и могут иметь разные значения для разных экземпляров. Пример:
class MyClass:
    def __init__(self, value):
        self.instance_attr = value  # Атрибут экземпляра

    def instance_method(self):
        return f"Instance attribute: {self.instance_attr}"

# Создание экземпляров класса
obj1 = MyClass(10)
obj2 = MyClass(20)

# Доступ к атрибутам экземпляров
print(obj1.instance_attr)  # Выведет: 10
print(obj2.instance_attr)  # Выведет: 20

# Изменение атрибутов экземпляров
obj1.instance_attr = 15
print(obj1.instance_attr)  # Выведет: 15
print(obj2.instance_attr)  # Выведет: 20
Основные различия 1️⃣Принадлежность: ✅Атрибуты класса принадлежат самому классу и одинаковы для всех его экземпляров. ✅Атрибуты экземпляра принадлежат конкретному объекту и могут различаться между экземплярами. 2️⃣Инициализация: ✅Атрибуты класса определяются в теле класса вне методов. ✅Атрибуты экземпляра обычно инициализируются в методе
ass(10)
ob
или других методах экземпляра. 3️⃣Доступ: ✅Атрибуты класса могут быть доступны как через класс, так и через его экземпляры. ✅Атрибуты экземпляра доступны только через экземпляры. 4️⃣Обновление: ✅Изменение атрибута класса через класс влияет на все экземпляры, но изменение атрибута экземпляра затрагивает только конкретный экземпляр. Пример совмещения атрибутов класса и экземпляра
class MyClass:
    class_attr = "Class attribute"

    def __init__(self, instance_value):
        self.instance_attr = instance_value

    def show_attrs(self):
        return f"{self.instance_attr} | {MyClass.class_attr}"

# Создание экземпляров класса
obj1 = MyClass("Instance 1")
obj2 = MyClass("Instance 2")

# Доступ к атрибутам через экземпляры
print(obj1.show_attrs())  # Выведет: Instance 1 | Class attribute
print(obj2.show_attrs())  # Выведет: Instance 2 | Class attribute

# Изменение атрибута класса
MyClass.class_attr = "New Class attribute"
print(obj1.show_attrs())  # Выведет: Instance 1 | New Class attribute
print(obj2.show_attrs())  # Выведет: Instance 2 | New Class attribute

# Изменение атрибута экземпляра
obj1.instance_attr = "Updated Instance 1"
print(obj1.show_attrs())  # Выведет: Updated Instance 1 | New Class attribute
Атрибуты класса принадлежат классу и одинаковы для всех его экземпляров. Атрибуты экземпляра принадлежат конкретным объектам и могут отличаться между экземплярами. Объявляются в теле класса, тогда как атрибуты экземпляра обычно инициализируются в методе
alue  # Ат
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

⚡️В сети начали находить курсы и книги известных онлайн школ в открытом доступе Вот отсортированная база с тонной материала(п
⚡️В сети начали находить курсы и книги известных онлайн школ в открытом доступе Вот отсортированная база с тонной материала(постепенно пополняется): 🔗 БАЗА (3385 видео): (343 видео, 87 книги) — Java (176 видео, 32 книги) — Git (293 видео, 63 книги) — C# (352 видео, 89 книги) — С++ (167 видео, 53 книги) — PHP (227 видео, 83 книги) — SQL (163 видео, 29 книги) — Linux (363 видео, 122 книги) — Python (415 видео, 168 книги) — Frontend (143 видео, 33 книги) — Flask (167 видео, 43 книги) — Django (197 видео, 49 книги) — Разработка ботов (137 видео, 93 книги) — Data Science (113 видео, 82 книги) — GameDev (129 видео, 73 книги) — QA Скачивать ничего не нужно — все выложили в Telegram и на YouTube с доступом по ссылке