ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

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

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

Открыть в Telegram

📈 Аналитический обзор Telegram-канала Python | Вопросы собесов

Канал Python | Вопросы собесов (@python_easy_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 12 631 подписчиков, занимая 9 920 место в категории Технологии и приложения и 51 114 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 12 631 подписчиков.

Согласно последним данным от 15 октября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -109, а за последние 24 часа — 0, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 6.20%. В первые 24 часа после публикации контент обычно набирает 4.23% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 783 просмотров. В течение первых суток публикация набирает 535 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 3.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, модуль, строка, docker, alice.

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

Автор описывает ресурс как площадку для выражения субъективного мнения:
“Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads”

Благодаря высокой частоте обновлений (последние данные получены 16 октября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

12 631
Подписчики
Нет данных24 часа
-277 дней
-10930 дней
Архив постов
🤔 Какое утверждение верно относительно декораторов классов в Python?
Anonymous voting

Большая конференция Яндекс Рекламы на ВТБ Арене 22 октября приглашаем маркетологов и специалистов по рекламе обсудить новые т
Большая конференция Яндекс Рекламы на ВТБ Арене 22 октября приглашаем маркетологов и специалистов по рекламе обсудить новые технологии и рекламные тренды. Ключевые участники рынка поделятся опытом и расскажут: ✅ Как развиваться специалистам в сфере рекламы ✅ Как продвигаться и продавать в интернете ✅ Какие тренды в маркетинге появляются сейчас Вас ждут доклады на актуальные темы, конкурсы и возможности для нетворкинга. Встречаемся 22 октября на ВТБ Арене. Будем вести прямую трансляцию — вы сможете посмотреть выступления, даже если не планируете приехать лично. Конференция бесплатная, нужно только зарегистрироваться. Зарегистрироваться #реклама 16+ ya.rekonfa.ru О рекламодателе

📌 Какая проблема Python связана с множественным наследованием? 💬 Спрашивают в 3% собеседований Множественное наследование в Python предоставляет мощный инструмент для создания классов, которые могут наследовать поведение и свойства от нескольких родительских классов. Однако с этим подходом связано несколько проблем, среди которых наиболее известная — проблема ромбовидного наследования, или проблема "алмаза". 🤔 Проблема ромбовидного наследования Эта проблема возникает, когда один класс наследует от двух классов, которые, в свою очередь, наследуют от одного общего родительского класса. Это создает ромбовидную структуру наследования:
     A
    / \
   B   C
    \ /
     D
🤔 Конкретные проблемы и их последствия 1️⃣Неоднозначность метода: Когда класс D вызывает метод, унаследованный от A, возникает вопрос — чей метод будет вызван, класса B или класса C? Это может привести к неоднозначности и непредсказуемому поведению программы. 2️⃣ Порядок разрешения методов (MRO): Python использует специальный алгоритм для определения порядка, в котором классы проверяются на наличие атрибутов и методов — C3-линеаризацию. Этот алгоритм помогает разрешить неоднозначности, но его нужно понимать и учитывать при проектировании классов. 3️⃣ Дублирование состояния: Если классы B и C изменяют состояние объекта (например, атрибуты), то класс D может столкнуться с проблемой дублирования или конфликтующих изменений состояния, унаследованного от A. 🤔 Как Python решает эти проблемы Python использует порядок разрешения методов (Method Resolution Order, MRO) для определения порядка, в котором должны вызываться методы. MRO формируется с использованием C3-линеаризации, которая старается сохранить логический и последовательный порядок наследования. ➕Пример использования MRO:
class A:
    def method(self):
        print("Method from A")

class B(A):
    def method(self):
        print("Method from B")

class C(A):
    def method(self):
        print("Method from C")

class D(B, C):
    pass

d = D()
d.method()  # Выведет "Method from B"
Здесь порядок разрешения методов будет следующим: D -> B -> C -> A. Это значит, что при вызове d.method(), сначала будет искать метод в классе D, затем в B, потом в C и, наконец, в A. Так как метод найден в классе B, он и будет вызван. ➕ Пример использования метода `mro` Чтобы увидеть порядок разрешения методов, можно использовать метод mro():
print(D.mro())
➕ Это выведет:
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
🤔 Подводя итог Множественное наследование в Python может вызывать проблемы, такие как неоднозначность методов и дублирование состояния. Python решает эти проблемы с помощью порядка разрешения методов (MRO) и C3-линеаризации. 🤔Кратко: Множественное наследование может привести к проблемам с неоднозначностью методов и дублированием состояния, но Python решает их с помощью специального порядка разрешения методов (MRO). 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

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

Ваши товары станут заметнее в поиске Яндекса Попробуйте Яндекс Товары, чтобы работать с фидами, аналитикой и растить продажи.
Ваши товары станут заметнее в поиске Яндекса Попробуйте Яндекс Товары, чтобы работать с фидами, аналитикой и растить продажи. Подробнее ⚡ Попробовать #реклама merchants.yandex.ru О рекламодателе

📌 На что влияет атрибут slots? 💬 Спрашивают в 3% собеседований Атрибут __slots__ в Python используется для ограничения атрибутов, которые экземпляр класса может иметь. Его основная цель - уменьшить потребление памяти и ускорить доступ к атрибутам объектов. Давайте рассмотрим, как это работает и зачем он нужен. 🤔 Как это работает Обычно в Python каждый объект хранит свои атрибуты в виде словаря. Это позволяет динамически добавлять новые атрибуты к объекту в любое время. Однако словарь занимает достаточно много памяти, что может стать проблемой, особенно если создается много объектов одного и того же класса. Атрибут __slots__ позволяет явно указать, какие атрибуты допустимы для экземпляров класса, и тем самым исключает создание словаря атрибутов (__dict__). Вместо этого, для хранения атрибутов используются структуры, которые занимают меньше памяти. 🤔 Зачем это нужно 1️⃣ Снижение потребления памяти: Экземпляры классов с __slots__ потребляют меньше памяти, так как не хранят словарь атрибутов. 2️⃣ Ускорение доступа к атрибутам: Так как не используется словарь, доступ к атрибутам происходит быстрее. 3️⃣ Контроль атрибутов: Используя __slots__, вы можете предотвратить случайное добавление новых атрибутов, которые не были предусмотрены. 🤔 Пример использования Рассмотрим пример с классом без использования __slots__ и с его использованием. ➕ Без __slots__
class MyClass:
    def __init__(self, x, y):
        self.x = x
        self.y = y

obj = MyClass(1, 2)
obj.z = 3  # Добавление нового атрибута
➕ С использованием __slots__
class MyClass:
    __slots__ = ['x', 'y']
    
    def __init__(self, x, y):
        self.x = x
        self.y = y

obj = MyClass(1, 2)
# obj.z = 3  # Это вызовет ошибку AttributeError, так как 'z' не в __slots__
🤔 Подводя итог Атрибут __slots__ уменьшает потребление памяти и ускоряет доступ к атрибутам объектов, исключая использование словаря атрибутов и явно ограничивая набор допустимых атрибутов. Это полезно для оптимизации производительности и контроля структуры объектов. 🤔 Кратко: __slots__ экономит память и ускоряет работу объектов, ограничивая их атрибуты. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

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

💸 Вакансии для IT'шников Выбери своё направление ⤵ 1. Frontend 2. Python 3. Java 4. Тестировщик QA 5. Data Science 6. DevOps 7. C# 8. С/C++ 9. Golang 10. PHP 11. Kotlin 12. Swift

Регистрируйтесь на главную конференцию Yandex Cloud! 5 тематических треков, 31 доклад, 50 экспертов, нетворкинг и общение. Уч
Регистрируйтесь на главную конференцию Yandex Cloud! 5 тематических треков, 31 доклад, 50 экспертов, нетворкинг и общение. Участие бесплатное. Зарегистрироваться #реклама scale.yandex.cloud О рекламодателе Реклама на Яндексе

📌 Что такое Try Except ? 💬 Спрашивают в 3% собеседований try и except — это ключевые слова, которые используются для обработки исключений (ошибок), возникающих во время выполнения программы. Они позволяют "ловить" исключения, предотвращать завершение программы при возникновении ошибок и обеспечивать выполнение альтернативного кода для обработки этих ошибок. 🤔 Основные компоненты блока 1️⃣ try: Внутри этого блока пишется код, который может потенциально вызвать исключение. 2️⃣ except: В этом блоке указывается код, который должен выполняться, если в блоке try возникнет исключение. 3️⃣ else: (необязательно) В этом блоке указывается код, который должен выполняться, если в блоке try не возникло никаких исключений. 4️⃣ finally: (необязательно) В этом блоке указывается код, который должен выполняться в любом случае, независимо от того, возникло исключение или нет. 🤔 Основная структура:
try:
    # код, который может вызвать исключение
    pass
except ExceptionType as e:
    # код, который выполняется при возникновении исключения
    pass
else:
    # код, который выполняется, если исключение не возникло
    pass
finally:
    # код, который выполняется в любом случае
    pass
🤔 Примеры использования try-except: Обработка конкретного исключения
try:
    x = int(input("Введите число: "))
    y = 10 / x
    print(f"Результат: {y}")
except ZeroDivisionError as e:
    print("Ошибка: Деление на ноль.")
except ValueError as e:
    print("Ошибка: Введено не числовое значение.")
🤔 В этом примере: ➕ Блок try включает код, который может вызвать два типа исключений: ZeroDivisionError и ValueError. ➕ Блоки except обрабатывают эти исключения и выводят соответствующие сообщения. 🤔 Обработка любых исключений
try:
    x = int(input("Введите число: "))
    y = 10 / x
    print(f"Результат: {y}")
except Exception as e:
    print(f"Произошла ошибка: {e}")
🤔 В этом примере: ➕ Блок try включает код, который может вызвать любое исключение. ➕ Блок except ловит любое исключение и выводит сообщение об ошибке. 🤔 Использование else и finally
try:
    x = int(input("Введите число: "))
    y = 10 / x
except ZeroDivisionError as e:
    print("Ошибка: Деление на ноль.")
except ValueError as e:
    print("Ошибка: Введено не числовое значение.")
else:
    print(f"Результат: {y}")
finally:
    print("Этот блок выполняется в любом случае.")
🤔 В этом примере: ➕ Блок else выполняется только если в блоке try не возникло исключений. ➕ Блок finally выполняется в любом случае, независимо от того, возникло исключение или нет. 🤔 Пользовательские исключения:
class CustomError(Exception):
    pass

try:
    raise CustomError("Это пользовательское исключение")
except CustomError as e:
    print(f"Поймано пользовательское исключение: {e}")
Использование try и except позволяет эффективно обрабатывать ошибки, предотвращая аварийное завершение программы и обеспечивая выполнение альтернативного кода для обработки ошибок. Дополнительные блоки else и finally предоставляют еще больше гибкости для управления потоком выполнения программы в случае возникновения и отсутствия исключений. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🤔 Какое утверждение о наследовании в Python верно?
Anonymous voting

📌 Что известно о геттерах и сеттерах, property атрибутах ? 💬 Спрашивают в 3% собеседований Геттеры и сеттеры — это методы, которые позволяют контролировать доступ к атрибутам объекта. Геттеры используются для получения значения атрибута, а сеттеры — для его изменения. Часто используется данный декоратор для создания геттеров и сеттеров, что позволяет писать код более элегантно и удобно. 🤔 Основные принципы: 1️⃣ Геттеры (getters): Метод для получения значения атрибута. 2️⃣ Сеттеры (setters): Метод для установки значения атрибута. 3️⃣ Декоратор `@property`: Используется для создания геттера. 4️⃣ Декоратор @<property_name>.setter: Используется для создания сеттера. ➕ Пример без его использования:
class Person:
    def __init__(self, name):
        self._name = name  # Приватный атрибут

    def get_name(self):
        return self._name

    def set_name(self, value):
        if isinstance(value, str) and value:
            self._name = value
        else:
            raise ValueError("Name must be a non-empty string")

# Использование
p = Person("Alice")
print(p.get_name())  # Вывод: Alice
p.set_name("Bob")
print(p.get_name())  # Вывод: Bob
➕ Пример с его использованием:
class Person:
    def __init__(self, name):
        self._name = name  # Приватный атрибут

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        if isinstance(value, str) and value:
            self._name = value
        else:
            raise ValueError("Name must be a non-empty string")

# Использование
p = Person("Alice")
print(p.name)  # Вывод: Alice
p.name = "Bob"
print(p.name)  # Вывод: Bob
🤔 Преимущества его использования: 1️⃣ Инкапсуляция: Позволяет скрыть внутреннюю реализацию атрибута и контролировать доступ к нему. 2️⃣ Безопасность: Можно добавить проверку значений, которые устанавливаются для атрибута, предотвращая некорректные данные. 3️⃣ Удобство: Использование @property делает код более читабельным и удобным, поскольку доступ к атрибутам осуществляется как к обычным свойствам объекта. 🤔 Пример с вычисляемыми свойствами:
class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, value):
        if value > 0:
            self._radius = value
        else:
            raise ValueError("Radius must be positive")

    @property
    def area(self):
        return 3.14159 * self._radius ** 2

# Использование
c = Circle(5)
print(c.radius)  # Вывод: 5
print(c.area)    # Вывод: 78.53975
c.radius = 10
print(c.area)    # Вывод: 314.159
🤔 Полное использование геттеров, сеттеров и делеттеров:
class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        if isinstance(value, str) and value:
            self._name = value
        else:
            raise ValueError("Name must be a non-empty string")

    @name.deleter
    def name(self):
        del self._name

# Использование
p = Person("Alice")
print(p.name)  # Вывод: Alice
p.name = "Bob"
print(p.name)  # Вывод: Bob
del p.name
# print(p.name)  # Ошибка: AttributeError, так как атрибут name был удален
Геттеры и сеттеры — это методы, которые позволяют контролировать доступ к атрибутам объекта, обеспечивая инкапсуляцию и безопасность. Часто используется декоратор @property, чтобы сделать использование геттеров и сеттеров более удобным и элегантным. Это позволяет создавать вычисляемые свойства, добавлять валидацию значений и улучшать читаемость кода. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

K2 Cloud и PiterPy2024 — бесплатный день конференции для питонистов. Ребята из K2 Cloud помогли организовать Community Day дл
K2 Cloud и PiterPy2024 — бесплатный день конференции для питонистов. Ребята из K2 Cloud помогли организовать Community Day для python-разработчиков. 18 сентября ты сможешь бесплатно послушать часть докладов конференции PiterPy: от мастерства карьерного роста до хитростей асинхронного программирования. Для участия нужно только зарегистрироваться. Подробнее на сайте

🤔 Какой из следующих модулей обеспечивает блокирующие операции ввода-вывода, совместимые с асинхронным кодом?
Anonymous voting

Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а зап
Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты. Если задуматься, то все в выигрыше: — ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя; — в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше; — мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут; — мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов. Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку! Узнать больше #реклама 16+ kata.academy О рекламодателе

📌 Чем отличается атрибут класса от атрибута объекта ? 💬 Спрашивают в 3% собеседований Атрибуты класса и атрибуты объекта (также известные как атрибуты экземпляра) играют важную роль. Понимание различий между ними помогает правильно организовать данные и поведение в классе. 🤔 Атрибут класса (или переменная класса) Это переменная, которая определяется внутри класса и доступна для всех экземпляров этого класса. Разделяется всеми экземплярами класса, и изменение атрибута класса отражается на всех экземплярах.
class MyClass:
    class_attribute = 42  # Атрибут класса

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

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

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

# Изменение атрибута класса
MyClass.class_attribute = 100
print(obj1.class_attribute)  # Вывод: 100
print(obj2.class_attribute)  # Вывод: 100
🤔 Атрибут объекта (или переменная экземпляра) Это переменная, которая определяется внутри метода конструктора (__init__) или другого метода и принадлежит конкретному экземпляру класса. Каждый экземпляр имеет свои собственные копии атрибутов объекта.
class MyClass:
    def __init__(self, value):
        self.instance_attribute = value  # Атрибут объекта

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

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

# Изменение атрибута объекта
obj1.instance_attribute = 30
print(obj1.instance_attribute)  # Вывод: 30
print(obj2.instance_attribute)  # Вывод: 20
🤔 Основные различия: 1️⃣ Область видимости и доступ: ➕ Атрибут класса: Определяется на уровне класса и доступен через класс и все его экземпляры. ➕ Атрибут объекта: Определяется на уровне экземпляра и доступен только через конкретный экземпляр. 2️⃣ Хранение данных: ➕ Атрибут класса: Общий для всех экземпляров класса. Изменения, внесенные через один экземпляр или через класс, видны всем экземплярам. ➕ Атрибут объекта: Уникален для каждого экземпляра. Изменения, внесенные через один экземпляр, не влияют на другие экземпляры. 3️⃣ Определение и инициализация: ➕ Атрибут класса: Определяется непосредственно внутри класса (вне методов). ➕ Атрибут объекта: Обычно инициализируется в методе конструктора (__init__) или других методах экземпляра. 4️⃣ Пример использования: ➕ Атрибут класса: Используется для хранения данных, общих для всех экземпляров класса, например, счетчиков, настроек по умолчанию. ➕ Атрибут объекта: Используется для хранения данных, уникальных для каждого экземпляра, например, конкретных свойств объекта. 🤔 Примеры: ➕ Атрибут класса для счетчика экземпляров:
class MyClass:
    instance_count = 0  # Атрибут класса

    def __init__(self):
        MyClass.instance_count += 1

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

print(MyClass.instance_count)  # Вывод: 2
➕ Атрибут объекта для уникальных данных экземпляра:
class MyClass:
    def __init__(self, name):
        self.name = name  # Атрибут объекта

# Создание экземпляров с уникальными данными
obj1 = MyClass("Alice")
obj2 = MyClass("Bob")

print(obj1.name)  # Вывод: Alice
print(obj2.name)  # Вывод: Bob
Атрибуты класса и атрибуты объекта играют важные роли в организации данных в классах. Атрибуты класса используются для хранения данных, общих для всех экземпляров класса, тогда как атрибуты объекта предназначены для уникальных данных каждого экземпляра. Понимание этих различий помогает правильно организовать данные и поведение в классах и эффективно использовать объектно-ориентированное программирование. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

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

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

📌 Что такое @dataclass ? 💬 Спрашивают в 3% собеседований Декоратор @dataclass, используется для автоматического создания методов для классов, которые в основном используются для хранения данных. Он автоматически генерирует такие методы, как __init__, repr, eq, и другие, на основе аннотаций типов, предоставленных в классе. Это делает код более лаконичным и менее подверженным ошибкам, устраняя необходимость вручную писать эти методы для простых классов данных. 🤔 Основные возможности: 1️⃣ Автоматическое создание методов: Автоматически генерирует методы init, repr, eq, и другие, что значительно упрощает код. 2️⃣ Типы полей: Поля класса определяются с помощью аннотаций типов. 3️⃣ Простота: Уменьшает количество шаблонного кода, делая классы более читабельными и удобными для поддержки. 4️⃣ Опциональные параметры: Поля могут иметь значения по умолчанию. 5️⃣ Сравнение и сортировка: Параметры декоратора позволяют автоматически генерировать методы для сравнения и сортировки объектов.
from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int

# Использование
p1 = Person(name="Alice", age=30)
p2 = Person(name="Bob", age=25)

print(p1)  # Вывод: Person(name='Alice', age=30)
print(p2)  # Вывод: Person(name='Bob', age=25)
🤔 В этом примере: ➕ Декоратор @dataclass автоматически генерирует конструктор init, метод repr и метод eq на основе аннотаций типов. 🤔 Дополнительные возможности: 1️⃣ Значения по умолчанию: Можно задавать значения по умолчанию для полей.
@dataclass
class Person:
    name: str
    age: int = 0

p1 = Person(name="Alice")
print(p1)  # Вывод: Person(name='Alice', age=0)
2️⃣ Поле field: Для более тонкой настройки можно использовать функцию field из модуля dataclasses.
from dataclasses import dataclass, field

@dataclass
class Person:
    name: str
    age: int = field(default=0, metadata={"info": "Age of the person"})

p1 = Person(name="Alice")
print(p1)  # Вывод: Person(name='Alice', age=0)
3️⃣ Исключение полей из сравнения: Поля могут быть исключены из методов сравнения, хэширования и репрезентации.
from dataclasses import dataclass, field

@dataclass
class Person:
    name: str
    age: int = field(compare=False)

p1 = Person(name="Alice", age=30)
p2 = Person(name="Alice", age=25)

print(p1 == p2)  # Вывод: True
4️⃣ Инициализация полей: Поля могут быть исключены из инициализации.
from dataclasses import dataclass, field

@dataclass
class Person:
    name: str
    age: int = field(init=False)

p1 = Person(name="Alice")
p1.age = 30
print(p1)  # Вывод: Person(name='Alice')
🤔 Пример с использованием всех возможностей:
from dataclasses import dataclass, field
from typing import List

@dataclass
class Person:
    name: str
    age: int = 0
    hobbies: List[str] = field(default_factory=list, compare=False)

p1 = Person(name="Alice", hobbies=["reading", "hiking"])
p2 = Person(name="Alice", age=25, hobbies=["reading", "hiking"])

print(p1)  # Вывод: Person(name='Alice', age=0, hobbies=['reading', 'hiking'])
print(p2)  # Вывод: Person(name='Alice', age=25, hobbies=['reading', 'hiking'])
print(p1 == p2)  # Вывод: True (потому что hobbies не участвуют в сравнении)
Декоратор @dataclass значительно упрощает создание классов, предназначенных для хранения данных, автоматизируя создание конструкторов и других методов. Он уменьшает количество шаблонного кода, улучшает читаемость и упрощает поддержку кода. Использование @dataclass особенно полезно в ситуациях, когда нужно создавать много классов данных с аналогичной структурой и поведением. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Коммутатор ЦОД MES5500-32 Eltex за 1 минуту - 32x40G/100G (QSFP+ / QSFP28) - 2x10G (SFP+) - RS-232 (RJ-45) - OOB - USB 2.0 Пропускная способность - 6,4 Тбит/с 2 модуля питания с горячей заменой: PM600-220/12 — 220В AC PM600-48/12 — 48В DC Настройка: - CLI через Telnet, SSH (Cisco-like) - веб-интерфейс - SNMP Комплектация: - Сертификат  - Паспорт устройства  - Комплект крепления в 19"стойку - Пылезащитные заглушки для портов Узнать цену #реклама eltexcm.ru О рекламодателе