uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку

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

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

Відкрити в Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

Показати більше

📈 Аналітичний огляд 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 О рекламодателе