Методы __str__ и ___герг__ реализуют отображения объектов при выводе. Первый вызывается встроенными функциями print() и str(); второй вызывается, если отсутствует __str__, и всегда вызывается встроенной функцией repr, при эхо-выводе в интерактивной подсказке и для вложенных появлений. То есть метод __repr__ применяется везде, исключая print() и str(), когда определен метод str(). Метод __str__ обычно используется для отображений, дружественных к пользователю, а __repr__ предоставляет для объекта дополнительные детали или форму как в коде.
👍1👎1
«object.__getitem__(self, key)
Вызывается для вычисления self[key]. Для типов последовательностей принимаемые ключи должны быть целыми числами. При необходимости они могут также поддерживать объекты срезов. Поддержка отрицательных индексов также необязательна».
Нарезание перехватывается методом индексирования__getitem__: он вызывается с объектом среза, а не с простым целочисленным индексом, и при необходимости объекты срезов можно передавать или ожидать.
Python documentation
3. Data model
Objects, values and types: Objects are Python’s abstraction for data. All data in a Python program is represented by objects or by relations between objects. (In a sense, and in conformance to Von ...
👍4👎1
«Перегрузка операций должна представляться, когда класс естественным образом согласуется с интерфейсами встроенного типа или должен их эмулировать. Коллекции могут имитировать интерфейсы последовательностей или отображений, а вызываемые объекты могут быть реализованы для использования с API-интерфейсом, который ожидает функцию. Однако в целом вы не должны реализовывать операции выражений, если они естественно и логически не подходят для ваших объектов — взамен применяйте нормально именованные методы».
— Point - логичная перегрузка + (сложение координат точек)
— Person - нелогичная перегрузка + (сложение людей не имеет математического смысла), но код работает и возвращает строку.
Этот пример демонстрирует принцип: перегружайте операции, только когда это логично и естественно для ваших объектов.
👍4👎1
Вопрос: Что объединяет async-архитектуры, продакшн ML, костыль, который стал фреймворком и код, за который не стыдно?
Ответ:всё это — темы докладов на PyCon Russia 2025.
Самая крупная Python-конференция в стране — уже через неделю!
25–26 июля, Москва
• 2 насыщенных трека — Python и Data
• 3 воркшопа
• Афтепати после первого дня
Хочешь встретиться с теми, кто пишет, дебажит, рефакторит и любит Python, вживую? Это твой шанс.
Вся программа и билеты на сайте, а общение в чате PyCon. (и да, обещают, на входе не будет вопросов по PEP8)
Это #партнёрский пост
Ответ:
Самая крупная Python-конференция в стране — уже через неделю!
25–26 июля, Москва
• 2 насыщенных трека — Python и Data
• 3 воркшопа
• Афтепати после первого дня
Хочешь встретиться с теми, кто пишет, дебажит, рефакторит и любит Python, вживую? Это твой шанс.
Вся программа и билеты на сайте, а общение в чате PyCon. (и да, обещают, на входе не будет вопросов по PEP8)
Это #партнёрский пост
👍1👾1
👍2👎1
«Отсутствие в словаре значения для переменной missing приводит к тому, что метод substitute() возбуждает исключение KeyError. В то же время метод safe substitute() вместо возбуждения исключения перехватывает его и оставляет в тексте само выражение переменной».
«Ключевым отличием шаблонов от строковых подстановок (интерполяции) и форматирования с помощью метода format() является то, что они не учитывают тип аргументов. Значения преобразуются в строки, а строки вставляются в результат. Опции форматирования полностью отсутствуют. Например, не существует способа управлять количеством цифр, используемых для представления значений с плавающей запятой.
Однако шаблоны обладают тем неоспоримым преимуществом, что использование их метода safe_substitute() позволяет избежать возникновения исключений в тех случаях, когда не все значения, в которых нуждаются шаблоны, представлены
аргументами».
👍1👎1
🧩 Что покажет t.pattern.pattern?
Anonymous Quiz
19%
Саму строку шаблона '$var'
35%
Регулярку, используемую для поиска переменных в шаблоне
35%
Покажет саму строку шаблона "\\$[a-zA-Z_][a-zA-Z0-9_]"
10%
Error
😱1
«Значением атрибута t.pattern является скомпилированное регулярное выражение, но исходная строка доступна через его атрибут pattern:
\$(?:
(?P<escaped>\$) | # Escape sequence of two delimiters
(?P<named>(?a:[_a-z][_a-z0-9]*)) | # delimiter and a Python identifier
{(?P<braced>(?a:[_a-z][_a-z0-9]*))} | # delimiter and a braced identifier
(?P<invalid>) # Other ill-formed delimiter exprs
)»
Это сложное регулярное выражение с именованными группами, которое обрабатывает различные варианты синтаксиса переменных в шаблонах Python.
🗿2
🤨1
«pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)
Изменяет представление данных с «широкого» на «длинный», при необходимости оставив заданные идентификаторы
То есть у каждого из трех id появится по три строки (по одной на каждую метрику — height, weight, age).
🤯1
👍1
DataFrame.dropna(*, axis=0, how=<no_default>, thresh=<no_default>, ...) Удаляет записи с пропущенными значениями. ...
Параметры:
...
thresh : int, optional
Порог отсечки по пустоте столбца.
В задаче выше удаляться все столбцы, чья заполненность ниже 80%.
GitHub
pandas/pandas/core/frame.py at v2.3.1 · pandas-dev/pandas
Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more - pandas-dev/pandas
👍1