Как перезагрузить импортированный модуль?
Чтобы перезагрузить импортированный модуль в Python, вы можете использовать функцию reload() из модуля importlib.
Вот как это сделать:
from importlib import reload
import module_name
reload(module_name)
Замените module_name на фактическое имя модуля, который вы хотите перезагрузить.
Это может быть полезно при разработке и тестировании модулей, но не рекомендуется использовать в производственном коде без серьезных причин.
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Вот как это сделать:
from importlib import reload
import module_name
reload(module_name)
Замените module_name на фактическое имя модуля, который вы хотите перезагрузить.
Это может быть полезно при разработке и тестировании модулей, но не рекомендуется использовать в производственном коде без серьезных причин.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3🔥2
Что такое дескрипторы? Есть ли разница между дескриптором и декоратором?
Дескрипторы – это объекты Python, которые определяют, как другие объекты должны вести себя при доступе к атрибуту. Дескрипторы могут использоваться для
реализации протоколов, таких как протокол доступа к атрибутам, протокол дескрипторов и протокол методов.
Декораторы – это функции Python, которые принимают другую функцию в качестве аргумента и возвращают новую функцию. Декораторы обычно используются для
изменения поведения функции без изменения ее исходного кода.
Разница между дескриптором и декоратором заключается в том, что дескрипторы используются для определения поведения атрибутов объекта, в то время как декораторы
используются для изменения поведения функций. Однако, декораторы могут использоваться для реализации протоколов дескрипторов.
Например, декоратор @property можно использовать для создания дескриптора доступа к атрибутам. Он преобразует метод класса в дескриптор, который позволяет
получать, устанавливать и удалять значение атрибута как обычный атрибут объекта.
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
реализации протоколов, таких как протокол доступа к атрибутам, протокол дескрипторов и протокол методов.
Декораторы – это функции Python, которые принимают другую функцию в качестве аргумента и возвращают новую функцию. Декораторы обычно используются для
изменения поведения функции без изменения ее исходного кода.
Разница между дескриптором и декоратором заключается в том, что дескрипторы используются для определения поведения атрибутов объекта, в то время как декораторы
используются для изменения поведения функций. Однако, декораторы могут использоваться для реализации протоколов дескрипторов.
Например, декоратор
получать, устанавливать и удалять значение атрибута как обычный атрибут объекта.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯2🔥1
Почему всякий раз, когда python завершает работу, не освобождается вся память?
Python использует автоматическое управление памятью с помощью механизма сборки мусора, который освобождает память, занятую объектами, которые больше не
используются в программе. Однако, до того как механизм сборки мусора может освободить память объекта, все ссылки на этот объект должны быть удалены. Если в
программе остаются ссылки на объекты, которые больше не нужны, то эти объекты не будут удалены до окончания работы приложения.
Также может случиться, что размер объектов, которые использует программа, слишком велик для доступной оперативной памяти. В этом случае операционная система
может начать использовать файл подкачки, что может замедлить работу программы.
Если вы столкнулись с проблемой утечки памяти, то можно воспользоваться инструментами, такими как memory_profiler для Python, которые помогут выявить места, где
память не освобождается, и найти способы ее оптимизации.
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
используются в программе. Однако, до того как механизм сборки мусора может освободить память объекта, все ссылки на этот объект должны быть удалены. Если в
программе остаются ссылки на объекты, которые больше не нужны, то эти объекты не будут удалены до окончания работы приложения.
Также может случиться, что размер объектов, которые использует программа, слишком велик для доступной оперативной памяти. В этом случае операционная система
может начать использовать файл подкачки, что может замедлить работу программы.
Если вы столкнулись с проблемой утечки памяти, то можно воспользоваться инструментами, такими как memory_profiler для Python, которые помогут выявить места, где
память не освобождается, и найти способы ее оптимизации.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3👍2
Что такое wheels и eggs? В чём разница?
В Python wheels и eggs – это форматы пакетов для установки и дистрибуции пакетов с помощью утилиты управления пакетами pip.
Eggs был первоначально разработан как формат дистрибуции пакетов для Python, но был заменен wheels. В отличие от wheels, eggs могут содержать .pyc файлы, что может привести к проблемам при установке на другой платформе или версии Python.
Wheels – это новый формат дистрибуции пакетов, который был введен в Python 2.7. Он поддерживается большинством пакетов на PyPI и имеет множество преимуществ, например:
Он не содержит .pyc файлов, что снижает вероятность конфликтов.
Он легко переносится между платформами и версиями Python.
Он поддерживает сжатие библиотек и упрощает установку требований.
В целом, wheels считается более продвинутой и предпочтительной формой дистрибуции пакетов в Python.
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Eggs был первоначально разработан как формат дистрибуции пакетов для Python, но был заменен wheels. В отличие от wheels, eggs могут содержать .pyc файлы, что может привести к проблемам при установке на другой платформе или версии Python.
Wheels – это новый формат дистрибуции пакетов, который был введен в Python 2.7. Он поддерживается большинством пакетов на PyPI и имеет множество преимуществ, например:
Он не содержит .pyc файлов, что снижает вероятность конфликтов.
Он легко переносится между платформами и версиями Python.
Он поддерживает сжатие библиотек и упрощает установку требований.
В целом, wheels считается более продвинутой и предпочтительной формой дистрибуции пакетов в Python.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤯1
Когда важно, чтобы программа работала быстро и экономила память, на помощь приходят алгоритмы. Книга Джорджа Хайнемана — это практическое руководство, которое кратко и четко объясняет ключевые алгоритмы, применимые в большинстве языков программирования.
Она не требует университетского образования, в отличие от многих учебников с упором на теорию. В книге даны готовые решения, написанные на Python, которые сразу можно использовать для повышения эффективности программ. Алгоритмы сопровождаются иллюстрациями, а исходные коды доступны в открытом доступе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое менеджер пакетов? Какие менеджеры пакетов вы знаете?
Менеджер пакетов – это инструмент, который позволяет управлять установкой, обновлением и удалением библиотек и зависимостей в проектах на языке Python.
Встречайте, вот наиболее популярные менеджеры пакетов Python:
pip – это стандартный менеджер пакетов Python. Он позволяет устанавливать пакеты из Python Package Index (PyPI) и других источников, а также управлять зависимостями проекта.
conda – это менеджер пакетов и среда управления, который позволяет управлять пакетами и зависимостями для проектов на Python, а также для других языков программирования и платформ.
easy_install – инструмент для установки и управления пакетами Python, который был стандартным до выпуска Python 3. Используется редко в настоящее время.
poetry – новый менеджер пакетов, предназначенный для замены в некоторой степени pip и virtualenv.
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Встречайте, вот наиболее популярные менеджеры пакетов Python:
pip – это стандартный менеджер пакетов Python. Он позволяет устанавливать пакеты из Python Package Index (PyPI) и других источников, а также управлять зависимостями проекта.
conda – это менеджер пакетов и среда управления, который позволяет управлять пакетами и зависимостями для проектов на Python, а также для других языков программирования и платформ.
easy_install – инструмент для установки и управления пакетами Python, который был стандартным до выпуска Python 3. Используется редко в настоящее время.
poetry – новый менеджер пакетов, предназначенный для замены в некоторой степени pip и virtualenv.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🤯1
Что такое файлы .pth?
Файлы с расширением .pth – это файлы, которые могут быть использованы для добавления директорий в путь поиска модулей Python. Директивы .pth выполняются при запуске интерпретатора Python и добавляют определенные каталоги в переменную sys.path. Это удобно, когда нужно импортировать модули из нестандартных директорий без необходимости переноса файлов в директории по умолчанию. Использование директив .pth достаточно распространено в мире Python и они встречаются в различных средах разработки и фреймворках, таких как PyTorch.
Файлы .pth могут быть также использованы злоумышленниками для внедрения вредоносного кода в систему Python, так как они могут изменять список каталогов, в которых выполняется поиск модулей Python. Поэтому необходимо быть внимательными при работе с такими файлами и использовать только те файлы .pth, которые вы знаете и доверяете.
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Файлы .pth могут быть также использованы злоумышленниками для внедрения вредоносного кода в систему Python, так как они могут изменять список каталогов, в которых выполняется поиск модулей Python. Поэтому необходимо быть внимательными при работе с такими файлами и использовать только те файлы .pth, которые вы знаете и доверяете.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает флаг PYTHONOPTIMIZE?
Ответ:
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Ответ:
Флаг -O или PYTHONOPTIMIZE в Python используется для оптимизации скомпилированного кода, что может привести к ускорению выполнения программы. Этот флаг удаляет отладочную информацию, отключает asset checks, asserts и отладочные проверки.
Стандартная оптимизация -O удаляет docstrings из скомпилированного byte-code, а также удаляет assert statements. С флагом -OO удаляются все docstrings в модулю (включая те, которые не соответствуют многострочным строкам) и также удаляются assert statements.
Запуск интерпретатора Python с флагом -O может уменьшить размер скомпилированного кода и сократить потребление памяти, что может привести к ускорению работы программы. Однако, для большинства приложений, эта оптимизация может не иметь значимого влияния на производительность.
Например, для запуска скрипта с флагом -O, можно использовать следующую команду в командной строке:
python -O my_script.py
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤯2
В каких ситуациях возникает исключение NotImplementedError?
Ответ:
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Ответ:
Исключение NotImplementedError возникает, когда метод или функция должны быть реализованы в подклассе, но не были реализованы. Это может произойти, когда родительский класс определяет метод, но не реализует его сам, а оставляет это для подклассов. В этом случае, если подкласс не реализует метод, он будет вызывать исключение NotImplementedError. Это может быть полезно для отладки, чтобы убедиться, что все необходимые методы реализованы в подклассах. Это также может возникнуть в
других ситуациях, например, если вы пытаетесь использовать неопределенную функцию или метод.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
Чем фреймворк отличается от библиотеки?
Ответ:
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Ответ:
Фреймворк и библиотека – это два разных подхода к организации кода, которые используются для упрощения разработки программного обеспечения.
Библиотека представляет собой коллекцию модулей или функций, предназначенных для использования другими приложениями. Она содержит набор готовых решений для различных задач и обеспечивает функциональность, которую можно использовать в своём приложении. Пользователь сам выбирает, какие модули или функции использовать, и какую логику реализовывать самостоятельно.
Фреймворк представляет собой интегрированный набор компонентов и инструментов, который предоставляет готовое решение для решения определенной задачи. Его основная цель – упростить разработку приложений, обеспечивая заранее заданную структуру и логику работы. В отличие от библиотеки, фреймворк накладывает определенные ограничения на структуру, логику и процесс разработки приложения, но при этом предоставляет готовый инструментарий для работы.
В целом, библиотека дает большую свободу в выборе логики и реализации приложения, но требует больше написания кода. Фреймворк же облегчает начало разработки и создает более унифицированный код, но может ограничивать возможности программиста по изменению поведения и структуры приложения.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Cython? Что такое IronPython? Что такое PyPy? Почему они до сих пор существуют и зачем?
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Cython – это язык программирования, нацеленный на увеличение производительности Python-кода. Cython позволяет использовать возможности языка Python и C/C++ для эффективного написания расширений модулей на языке Python. Он позволяет вам писать код на Python, который доступен из C/C++, и наоборот. Cython обеспечивает скорость выполнения, сравнимую со скоростью выполнения на языке C/C++, при этом сохраняя простоту и удобство использования языка Python. Cython compiler
компилирует исходный код в C/C++ и затем переводит его в машинный код, что дает быстрый доступ к низкоуровневым ресурсам операционной системы, таким как память и ввод-вывод. Cython также предоставляет возможность использовать дополнительные функции, такие как статическая типизация и параллельное программирование, для дополнительного увеличения производительности.
IronPython – это реализация языка программирования Python, которая работает в контексте платформы .NET. IronPython предоставляет возможность использовать Python в качестве языка .NET. Он может использоваться для написания .NET-приложений, а также для расширения приложений, написанных на других языках .NET. IronPython является открытым и свободно распространяемым программным обеспечением.
PyPy — это высокопроизводительная реализация языка программирования Python. Он был создан с целью предоставления более быстрой и эффективной альтернативы стандартному интерпретатору CPython. PyPy включает компилятор Just-In-Time (JIT), который может оптимизировать выполнение кода Python во время выполнения, что может привести к значительному повышению производительности по сравнению с CPython, особенно для определенных типов рабочих нагрузок. PyPy также поддерживает многие из тех же функций и модулей, что и CPython, включая объектно-ориентированное программирование, динамическую типизацию и стандартную библиотеку Python.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Что не так с этим кодом? В каких условиях его используют?
Ответ:
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
if __debug__:
assert False, ("error")
Ответ:
Этот код вызывает ошибку утверждения assert с сообщением "error", если __debug__ равен True.
__debug__ – это встроенная переменная Python, которая является истинной, если к интерактивной консоли или скрипту был присоединен флаг оптимизации -O. Для типичных скриптов в режиме отладки эта переменная равна True. Если оптимизация включена, то интерпретатор Python игнорирует все операторы утверждения assert, поэтому этот код не вызовет ошибку в optimized mode.
Такой код может быть использован для проверки инвариантов в программе или для отладки кода. Если утверждение не выполняется и вызывается AssertionError, это означает, что в программе произошло что-то непредвиденное, что нарушило заданное утверждение, и программа остановится с сообщением об ошибке.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Современный Python предлагает множество возможностей, что может запутать начинающих разработчиков. Книга отвечает на вопросы о том, как новичкам не перегореть на старте обучения, как опытным корректно оценить свой стиль программирования и глубже понять язык.
В книге акцентируется внимание на ключевых возможностях Python версии 3.6 и выше, а автор на практике объясняет, как структурировать код для лучшей читаемости, тестируемости и отладки.
Будут затронуты все важные темы программирования: абстракции данных, структуры программ, управление программной логикой, функции, объекты, модули и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Что такое monkey patching? Приведите пример использования
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Monkey patching – это техника изменения поведения кода во время выполнения путем динамической замены или добавления методов или атрибутов в существующем объекте. По сути, мы просто переопределяем метод за пределами объявления класса. Это может быть полезно, когда изменения не могут быть внесены в существующий код, и требует минимальных изменений в существующем коде.
Например, можно добавить новый метод в класс в runtime, который наследуется от базового класса:
class MyBaseClass:
def my_method(self):
print('Hello from MyBaseClass')
def monkey_patch():
def new_method(self):
print('Hello from new_method')
MyBaseClass.my_method = new_method
monkey_patch()
obj = MyBaseClass()
obj.my_method() # выведет "Hello from new_method"
В этом примере мы добавляем новый метод new_method() в класс MyBaseClass, используя функцию monkey_patch(). После этого, вызов метода obj.my_method() выведет строку 'Hello from new_method'
Важно учитывать, что использование monkey patching может усложнить отладку и поддержку в будущем, поэтому следует использовать эту технику с осторожностью и только при необходимости.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
Что должен знать современный Middle Frontend
👉 Смотреть видео
Вы и сами знаете, как тяжело обстоят дела с трудоустройством в 2025 году. Откликов на джунов больше, чем вакансий, и даже опытные вроде бы мидлы долго ищут работу.
В видео разобрал подробно, что нужно знать современному мидлу, чтобы соответствовать запросам рынка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Когда использование Python является «правильным выбором» для проекта?
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Использование Python может быть правильным выбором для проекта в следующих случаях:
— Когда нужен быстрый прототип или быстрое решение, которое будет работать достаточно быстро без оптимизации производительности.
— Когда нужен простой и понятный синтаксис языка программирования, который позволит быстрее писать код и делать его более читабельным.
— Когда нужен доступ к большому количеству сторонних библиотек и фреймворков в области машинного обучения, науки о данных, веб-разработки и многих других областях.
— Когда необходимо использование «кляузы batteries included», определяющей ысокоуровневый язык программирования с широким спектром интегрированных библиотек и модулей.
Однако Python может не быть оптимальным выбором для тех приложений, где требуется высокая производительность или многоуровневая безопасность. В этих случаях может быть предпочтительнее использование языков, таких как C++, Java, или C#. Ну или Rust
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
Что такое метод?
Ответ:
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Ответ:
Методы в Python – это функции, определенные внутри класса, которые могут быть вызваны на экземпляре этого класса или на самом классе. Методы предоставляют способ для объектов класса взаимодействовать с данными, хранящимися внутри объекта, а также для выполнения действий, которые связаны с этими данными.
Например, если у вас есть класс Person с атрибутами name и age, атрибут name будет хранить имя объекта Person, а атрибут age будет хранить возраст. Вы можете определить методы, такие как get_name и get_age, которые могут быть вызваны на экземпляре класса для получения значения хранящихся в атрибутах name и age соответственно.
Вот пример определения класса Person с методами get_name и get_age:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
returnself.name
def get_age(self):
return self.age
Здесь метод init – это конструктор класса, который инициализирует атрибуты name и age, а методы get_name и get_age предоставляют доступ к их значениям.
Кстати, __init__ — это один из дандер-методов, о том, как работать с ними неплохо описано тут:Руководство по магическим методам в Питоне
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3🔥1
Есть ли в Python оператор switch-case?
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
В Python нет прямого оператора switch-case, как в других языках программирования. Однако, начиная с версии Python 3.10, появилась возможность использовать оператор match-case, который является аналогом switch-case в других языках. Он позволяет проверять значения на соответствие определенным шаблонам и выполнять соответствующее действие в зависимости от того, какой шаблон соответствует значению.
Пример использования оператора match-case:
def process_value(value):
match value:
case 1:
print("Value is 1")
case 2 | 3 | 4:
print("Value is 2 or 3 or 4")
case _:
print("Value is not 1 or 2 or 3 or 4")
process_value(1) # output: Value is 1
process_value(3) # output: Value is not 1 or 2
Оператор match-case доступен только в версии Python 3.10 и выше, поэтому если вы используете более старую версию Python, то нужно воспользоваться другими способами для решения задачи, например, использовать условные выражения if-elif-else или словари.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤯1
Как создать свой собственный пакет в Python?
Ответ:
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Ответ:
Для создания своего собственного пакета в Python нужно выполнить следующие шаги:
Создать директорию с именем вашего пакета.
Внутри директории создать файлinit.py , который будет пустым, но он необходим, чтобы Python распознал эту директорию как пакет.
Создать необходимые модули и скрипты внутри директории вашего пакета.
Определить файлsetup.py с метаданными вашего пакета и его зависимостями, например:
from setuptools import setup, find_packages
setup(
name='mypackage',
version='1.0',
packages=find_packages(),
install_requires=['numpy', 'scipy']
)
Создать дистрибутив вашего пакета, выполнив команду pythonsetup.py sdist
Установить свой пакет с помощью pip, выполнив команду pip install dist/mypackage-1.0.tar.gz.
После этого вы можете использовать свой пакет в своих проектах или опубликовать его на Python Package Index (PyPI) для использования другими людьми.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
Как передать необязательные или ключевые параметры из одной функции в другую?
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
В Python для передачи необязательных параметров в функцию используется синтаксис со знаком звездочки (*) и двойной звездочки (**). Вот пример:
def my_function(required_arg, *args, **kwargs):
print(required_arg)
if args:
print(args)
if kwargs:
print(kwargs)
my_function('Hello, world!', 2, 3, 4, my_keyword='some_value')
В этом примере required_arg – обязательный аргумент функции my_function. После этого первого аргумента мы указали символ звездочки (*), чтобы пометить все
следующие аргументы как необязательные. В примере, это args, который преобразуется в кортеж. Далее, мы указали символ двойной звездочки (**), чтобы пометить все
следующие аргументы как необязательные с ключами. Это параметр kwargs, который преобразуется в словарь.
В вызове my_function, мы передаем обязательный аргумент 'Hello, world!', аргументы args – 2, 3, 4, и ключевой параметр my_keyword со значением 'some_value' в kwargs.
Таким образом, эта функция может принимать переменное количество аргументов, как позиционных, так и именованных.
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤯1
Что такое магические методы (dunder-методы)?
Ответ:
Если знали ответ — поставьте 🔥
Если нет — 🤯
➡️ Подготовка Python | #вопросы
Ответ:
Магические методы, также известные как “dunder” (double underscore) методы в Python, это специальные методы, которые начинаются и заканчиваются двойным подчеркиванием. Они позволяют определить, как объекты этого класса будут вести себя в различных контекстах, например, при использовании операторов Python, таких как +, -, *, / и т.д., при вызове функций и методов, при сериализации и многое другое.
Некоторые примеры магических методов в Python включают:
init: инициализирует новый экземпляр объекта
str: определяет, как объект будет представлен в строковом формате
add: определяет, что происходит при использовании оператора +
len: определяет, как объект будет представлен при вызове функции len()
getitem: позволяет получать доступ к элементам объекта, как к элементам списка
Магические методы могут быть очень полезными при создании пользовательских классов в Python, так как они позволяют управлять поведением объектов в различных контекстах и создавать более понятный и гибкий код.
# иллюстрация "утиной типизации": мы можем измерять длину у всего, где есть метод len()
class MyClass:
def __len__(self):
print('длина - это смотря как посмотреть')
return 0
myclass = MyClass()
print(len(myclass))
Если знали ответ — поставьте 🔥
Если нет — 🤯
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯2