Методы
Метод
🐍 Укус питона // 💬 Чат // #теория #функции #методы #__repr__ #__str__
__repr__
и __str__
Метод __repr__
выдает текстовое или строковое представление сущности или объекта. Этот процесс вызывается всякий раз при вызове функции repr
для какой-то сущности.Метод
__str__
делает то же самое, но ее поведение всё же немного отличается. Она предназначена для создания удобочитаемой версии, полезной для отслеживания или отображения информации об объекте. А метод __repr__
предназначен для предоставления «официального» текстового образа объекта, который можно использовать для воссоздания этого объекта.🐍 Укус питона // 💬 Чат // #теория #функции #методы #__repr__ #__str__
Параметры декоратора dataclass
С помощью параметров декоратор dataclass позволяет сгенерировать дополнительный шаблонный код и вообще настроить генерацию кода, смотрим код:
Рассмотрим базовые параметры:
● init: если равно True, то генерируется функция init(). По умолчанию равно True
● repr: если равно True, то генерируется функция repr(), которая возвращает строковое представление объекта. По умолчанию равно True
● eq: если равно True, то генерируется функция eq(), которая сравнивает два объекта. По умолчанию равно True
● order: если равно True, то генерируются функции lt (операция <), le (<=), gt (>), ge (>=), которые применяются для упорядочивания объектов. По умолчанию равно False
● unsafe_hash: если равно True, то генерируется функция hash(), которая возвращает хеш объекта. По умолчанию равно False
🐍 Укус питона // 💬 Чат // #теория #dataclass
С помощью параметров декоратор dataclass позволяет сгенерировать дополнительный шаблонный код и вообще настроить генерацию кода, смотрим код:
Рассмотрим базовые параметры:
● init: если равно True, то генерируется функция init(). По умолчанию равно True
● repr: если равно True, то генерируется функция repr(), которая возвращает строковое представление объекта. По умолчанию равно True
● eq: если равно True, то генерируется функция eq(), которая сравнивает два объекта. По умолчанию равно True
● order: если равно True, то генерируются функции lt (операция <), le (<=), gt (>), ge (>=), которые применяются для упорядочивания объектов. По умолчанию равно False
● unsafe_hash: если равно True, то генерируется функция hash(), которая возвращает хеш объекта. По умолчанию равно False
🐍 Укус питона // 💬 Чат // #теория #dataclass
Модуль dataclass. Data-классы
Таким образом, мы уже сократили определение класса и сделали его более простым. Но генерацией метода init функциональность декоратора dataclass не ограничивается. В реальности data-класс будет аналогичен следующему, смотрим на первый пример:
В данном случае мы видим, что кроме функции init, также определяется функция repr() для возвращения строкового представления и функция eq() для сравнения двух объектов. Применение данных функций:
🐍 Укус питона // 💬 Чат // #теория #модули #dataclass #data
Таким образом, мы уже сократили определение класса и сделали его более простым. Но генерацией метода init функциональность декоратора dataclass не ограничивается. В реальности data-класс будет аналогичен следующему, смотрим на первый пример:
В данном случае мы видим, что кроме функции init, также определяется функция repr() для возвращения строкового представления и функция eq() для сравнения двух объектов. Применение данных функций:
🐍 Укус питона // 💬 Чат // #теория #модули #dataclass #data
Параметры декоратора dataclass
С помощью параметров декоратор dataclass позволяет сгенерировать дополнительный шаблонный код и вообще настроить генерацию кода, смотрим код:
Рассмотрим базовые параметры:
• init: если равно True, то генерируется функция init(). По умолчанию равно True
• repr: если равно True, то генерируется функция repr(), которая возвращает строковое представление объекта. По умолчанию равно True
• eq: если равно True, то генерируется функция eq(), которая сравнивает два объекта. По умолчанию равно True
• order: если равно True, то генерируются функции lt (операция <), le (<=), gt (>), ge (>=), которые применяются для упорядочивания объектов. По умолчанию равно False
• unsafe_hash: если равно True, то генерируется функция hash(), которая возвращает хеш объекта. По умолчанию равно False
Кроме того, те функции, которые создаются по умолчанию, могут быть переопределены.
🐍 Укус питона // 💬 Чат // #теория #модули #dataclass #data #декораторы
С помощью параметров декоратор dataclass позволяет сгенерировать дополнительный шаблонный код и вообще настроить генерацию кода, смотрим код:
Рассмотрим базовые параметры:
• init: если равно True, то генерируется функция init(). По умолчанию равно True
• repr: если равно True, то генерируется функция repr(), которая возвращает строковое представление объекта. По умолчанию равно True
• eq: если равно True, то генерируется функция eq(), которая сравнивает два объекта. По умолчанию равно True
• order: если равно True, то генерируются функции lt (операция <), le (<=), gt (>), ge (>=), которые применяются для упорядочивания объектов. По умолчанию равно False
• unsafe_hash: если равно True, то генерируется функция hash(), которая возвращает хеш объекта. По умолчанию равно False
Кроме того, те функции, которые создаются по умолчанию, могут быть переопределены.
🐍 Укус питона // 💬 Чат // #теория #модули #dataclass #data #декораторы
Параметры декоратора dataclass. Продолжение.
Применение параметров:
В данном случае включаем генерирование хеша и функций упорядочивания, а также явным образом переопределяем функцию repr для создания строкового представления объекта.
🐍 Укус питона // 💬 Чат // #теория #модули #dataclass #data #декораторы
Применение параметров:
В данном случае включаем генерирование хеша и функций упорядочивания, а также явным образом переопределяем функцию repr для создания строкового представления объекта.
🐍 Укус питона // 💬 Чат // #теория #модули #dataclass #data #декораторы
разница между методами str и repr ?
Спросят с вероятностью 3%
Метод str:
- Цель: Возвращает строковое представление объекта, понятное и удобное для пользователя.
- Использование: Вызывается функцией str() и при использовании print().
- Предназначение: Для более дружественного и читаемого представления объекта.
Метод repr:
- Цель: Возвращает строку, представляющую объект официально и, по возможности, позволяющую воссоздать объект при передаче этой строки в eval().
- Использование: Вызывается функцией repr() и отображается интерактивной оболочкой Python для представления объектов.
- Предназначение: Для более точного и детализированного представления объекта, предназначенного для разработчиков.
Основные различия:
1. Контекст использования:
- str предназначен для удобного представления объекта пользователю.
- repr предназначен для официального представления объекта, полезного для отладки и разработки.
2. Вызываемые функции:
- str() и print() используют str.
- repr() и интерактивная оболочка Python используют repr.
3. Содержимое строки:
- str возвращает удобочитаемую строку.
- repr возвращает строку, которая может содержать больше технической информации и может использоваться для воссоздания объекта.
Примеры реализации обоих методов:
Таким образом, метод str возвращает понятное для пользователя строковое представление объекта, используемое функцией str() и print(), в то время как метод repr возвращает официальное строковое представление объекта, используемое функцией repr() и интерактивной оболочкой Python, и часто предназначен для отладки.
Спросят с вероятностью 3%
Метод str:
- Цель: Возвращает строковое представление объекта, понятное и удобное для пользователя.
- Использование: Вызывается функцией str() и при использовании print().
- Предназначение: Для более дружественного и читаемого представления объекта.
Метод repr:
- Цель: Возвращает строку, представляющую объект официально и, по возможности, позволяющую воссоздать объект при передаче этой строки в eval().
- Использование: Вызывается функцией repr() и отображается интерактивной оболочкой Python для представления объектов.
- Предназначение: Для более точного и детализированного представления объекта, предназначенного для разработчиков.
Основные различия:
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 возвращает понятное для пользователя строковое представление объекта, используемое функцией str() и print(), в то время как метод repr возвращает официальное строковое представление объекта, используемое функцией repr() и интерактивной оболочкой Python, и часто предназначен для отладки.