Методы
Метод
🐍 Укус питона // 💬 Чат // #теория #функции #методы #__repr__ #__str__
__repr__
и __str__
Метод __repr__
выдает текстовое или строковое представление сущности или объекта. Этот процесс вызывается всякий раз при вызове функции repr
для какой-то сущности.Метод
__str__
делает то же самое, но ее поведение всё же немного отличается. Она предназначена для создания удобочитаемой версии, полезной для отслеживания или отображения информации об объекте. А метод __repr__
предназначен для предоставления «официального» текстового образа объекта, который можно использовать для воссоздания этого объекта.🐍 Укус питона // 💬 Чат // #теория #функции #методы #__repr__ #__str__
Поиск в строке
Для поиска подстроки в строке в Python применяется метод find(), который возвращает индекс первого вхождения подстроки в строку и имеет три формы:
• find(str): поиск подстроки str ведется с начала строки до ее конца
• find(str, start): параметр start задает начальный индекс, с которого будет производиться поиск
• find(str, start, end): параметр end задает конечный индекс, до которого будет идти поиск
Если подстрока не найдена, метод возвращает -1, смотрим код:
🐍 Укус питона // 💬 Чат // #теория #строки
Для поиска подстроки в строке в Python применяется метод find(), который возвращает индекс первого вхождения подстроки в строку и имеет три формы:
• find(str): поиск подстроки str ведется с начала строки до ее конца
• find(str, start): параметр start задает начальный индекс, с которого будет производиться поиск
• find(str, start, end): параметр end задает конечный индекс, до которого будет идти поиск
Если подстрока не найдена, метод возвращает -1, смотрим код:
🐍 Укус питона // 💬 Чат // #теория #строки
Объединение строк
Одной из самых распространенных операций со строками является их объединение или конкатенация. Для объединения строк применяется операция сложения, первый пример 👀:
С объединением двух строк все просто, но что, если нам надо сложить строку и число? В этом случае необходимо привести число к строке с помощью функции str(), внимание на второй пример:
🐍 Укус питона // 💬 Чат // #теория #строки
Одной из самых распространенных операций со строками является их объединение или конкатенация. Для объединения строк применяется операция сложения, первый пример 👀:
С объединением двух строк все просто, но что, если нам надо сложить строку и число? В этом случае необходимо привести число к строке с помощью функции str(), внимание на второй пример:
🐍 Укус питона // 💬 Чат // #теория #строки
Явные преобразования
В некоторых случаях возникает необходимость вручную выполнить преобразование типов. Например, пусть у нас будет следующий код:
Мы ожидаем, что "2" + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И мы увидим при выполнении кода что-то наподобие примера во второй части кода:
Для преобразования типов Python предоставляет ряд встроенных функций:
• int(): преобразует значение в целое число
• float(): преобразует значение в число с плавающей точкой
• str(): преобразует значение в строку
🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #int #float #str
В некоторых случаях возникает необходимость вручную выполнить преобразование типов. Например, пусть у нас будет следующий код:
Мы ожидаем, что "2" + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И мы увидим при выполнении кода что-то наподобие примера во второй части кода:
Для преобразования типов Python предоставляет ряд встроенных функций:
• int(): преобразует значение в целое число
• float(): преобразует значение в число с плавающей точкой
• str(): преобразует значение в строку
🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #int #float #str
Str
Функция str() преобразует значение в строку, первый пример:
Функция str() может быть актуальна, например, при добавлении к строке значения другого типа. Например, в следующем случае мы получим ошибку, вторая часть кода:
Если число складывается с число, то это стандартная операция сложения чисел. Если строка складывается со строкой, то это операция объединения строк. Но каким образом выполнить операцию сложения по отношение к строке и числу, Python не знает. И если мы в данном случае мы хотим выполнить операцию объединения строк, то число можно привести к строке с помощью функции str(), третья часть кода:
🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #str
Функция str() преобразует значение в строку, первый пример:
Функция str() может быть актуальна, например, при добавлении к строке значения другого типа. Например, в следующем случае мы получим ошибку, вторая часть кода:
Если число складывается с число, то это стандартная операция сложения чисел. Если строка складывается со строкой, то это операция объединения строк. Но каким образом выполнить операцию сложения по отношение к строке и числу, Python не знает. И если мы в данном случае мы хотим выполнить операцию объединения строк, то число можно привести к строке с помощью функции str(), третья часть кода:
🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #str
Класс object. Строковое представление объекта
Начиная с 3-й версии в языке программирования Python все классы неявно имеют один общий суперкласс - object и все классы по умолчанию наследуют его методы.
Одним из наиболее используемых методов класса object является метод str(). Когда необходимо получить строковое представление объекта или вывести объект в виде строки, то Python как раз вызывает этот метод. И при определении класса хорошей практикой считается переопределение этого метода.
К примеру, возьмем класс Person и выведем его строковое представление, смотрим пример:
При запуске программа выведет что-то наподобие следующего, вторая часть кода:
Это не очень информативная информация об объекте. Мы, конечно, можем выйти из положения, определив в классе Person дополнительный метод, который выводит данные объекта - в примере выше это метод display_info.
🐍 Укус питона // 💬 Чат // #теория #классы #object
Начиная с 3-й версии в языке программирования Python все классы неявно имеют один общий суперкласс - object и все классы по умолчанию наследуют его методы.
Одним из наиболее используемых методов класса object является метод str(). Когда необходимо получить строковое представление объекта или вывести объект в виде строки, то Python как раз вызывает этот метод. И при определении класса хорошей практикой считается переопределение этого метода.
К примеру, возьмем класс Person и выведем его строковое представление, смотрим пример:
При запуске программа выведет что-то наподобие следующего, вторая часть кода:
Это не очень информативная информация об объекте. Мы, конечно, можем выйти из положения, определив в классе Person дополнительный метод, который выводит данные объекта - в примере выше это метод display_info.
🐍 Укус питона // 💬 Чат // #теория #классы #object
Класс object. Строковое представление. Продолжение.
Рассмотрим другой выход решения проблемы недостаточной информации об объекте - определим в классе Person метод str() (по два подчеркивания с каждой стороны), смотрим код:
Метод str должен возвращать строку. И в данном случае мы возвращаем базовую информацию о человеке. Если нам потребуется использовать эту информацию в других методах класса, то мы можем использовать выражение self.str()
И теперь консольный вывод будет другим, нижняя часть примера:
🐍 Укус питона // 💬 Чат // #теория #классы #object
Рассмотрим другой выход решения проблемы недостаточной информации об объекте - определим в классе Person метод str() (по два подчеркивания с каждой стороны), смотрим код:
Метод str должен возвращать строку. И в данном случае мы возвращаем базовую информацию о человеке. Если нам потребуется использовать эту информацию в других методах класса, то мы можем использовать выражение self.str()
И теперь консольный вывод будет другим, нижняя часть примера:
🐍 Укус питона // 💬 Чат // #теория #классы #object
Модуль locale. Продолжение.
Непосредственно для форматирования чисел и валют модуль locale предоставляет две функции:
• currency(num): форматирует валюту
• format_string(str, num): подставляет число num вместо плейсхолдера в строку str
Применяются следующие плейсхолдеры:
• d: для целых чисел
• f: для чисел с плавающей точкой
• e: для экспоненциальной записи чисел
Перед каждым плейсхолдером ставится знак процента %, например, первый пример:
При выводе дробных чисел перед плейсхолдером после точки можно указать, сколько знаков в дробной части должно отображаться, второй пример:
🐍 Укус питона // 💬 Чат // #теория #модули #locale
Непосредственно для форматирования чисел и валют модуль locale предоставляет две функции:
• currency(num): форматирует валюту
• format_string(str, num): подставляет число num вместо плейсхолдера в строку str
Применяются следующие плейсхолдеры:
• d: для целых чисел
• f: для чисел с плавающей точкой
• e: для экспоненциальной записи чисел
Перед каждым плейсхолдером ставится знак процента %, например, первый пример:
При выводе дробных чисел перед плейсхолдером после точки можно указать, сколько знаков в дробной части должно отображаться, второй пример:
🐍 Укус питона // 💬 Чат // #теория #модули #locale
Что выведет этот код?
Anonymous Quiz
65%
My Name Is James Bond
11%
TypeError: неподдерживаемый операнд type(s) for * or pow(): 'str' and 'int'
24%
My name is james bond
Основные методы строк.
Рассмотрим основные методы строк, которые мы можем применить в приложениях:
• isalpha(): возвращает True, если строка состоит только из алфавитных символов
islower(): возвращает True, если строка состоит только из символов в нижнем регистре
• isupper(): возвращает True, если все символы строки в верхнем регистре
• isdigit(): возвращает True, если все символы строки - цифры
• isnumeric(): возвращает True, если строка представляет собой число
• startswith(str): возвращает True, если строка начинается с подстроки str
Например, если мы ожидаем ввод с клавиатуры числа, то перед преобразованием введенной строки в число можно проверить, с помощью метода isnumeric() введено ли в действительности число, и если так, то выполнить операцию преобразования:
🐍 Укус питона // 💬 Чат // #теория #строки #методы
Рассмотрим основные методы строк, которые мы можем применить в приложениях:
• isalpha(): возвращает True, если строка состоит только из алфавитных символов
islower(): возвращает True, если строка состоит только из символов в нижнем регистре
• isupper(): возвращает True, если все символы строки в верхнем регистре
• isdigit(): возвращает True, если все символы строки - цифры
• isnumeric(): возвращает True, если строка представляет собой число
• startswith(str): возвращает True, если строка начинается с подстроки str
Например, если мы ожидаем ввод с клавиатуры числа, то перед преобразованием введенной строки в число можно проверить, с помощью метода isnumeric() введено ли в действительности число, и если так, то выполнить операцию преобразования:
🐍 Укус питона // 💬 Чат // #теория #строки #методы
Основные методы строк.
• endswith(str): возвращает True, если строка заканчивается на подстроку str
• lower(): переводит строку в нижний регистр
• upper(): переводит строку в вехний регистр
• title(): начальные символы всех слов в строке переводятся в верхний регистр
• capitalize(): переводит в верхний регистр первую букву только самого первого слова строки
• lstrip(): удаляет начальные пробелы из строки
• rstrip(): удаляет конечные пробелы из строки
• strip(): удаляет начальные и конечные пробелы из строки
ljust(width): если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю
• rjust(width): если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю
Проверка, начинается или оканчивается строка на определенную подстроку:
🐍 Укус питона // 💬 Чат // #теория #строки #методы
• endswith(str): возвращает True, если строка заканчивается на подстроку str
• lower(): переводит строку в нижний регистр
• upper(): переводит строку в вехний регистр
• title(): начальные символы всех слов в строке переводятся в верхний регистр
• capitalize(): переводит в верхний регистр первую букву только самого первого слова строки
• lstrip(): удаляет начальные пробелы из строки
• rstrip(): удаляет конечные пробелы из строки
• strip(): удаляет начальные и конечные пробелы из строки
ljust(width): если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю
• rjust(width): если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю
Проверка, начинается или оканчивается строка на определенную подстроку:
🐍 Укус питона // 💬 Чат // #теория #строки #методы
Основные методы строк. Продолжение.
• center(width): если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру
• find(str[, start [, end]): возвращает индекс подстроки в строке. Если подстрока не найдена, возвращается число -1
• replace(old, new[, num]): заменяет в строке одну подстроку на другую
• split([delimeter[, num]]): разбивает строку на подстроки в зависимости от разделителя
• partition(delimeter): разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов - подстрока до разделителя, разделитель и подстрока после разделителя
• join(strs): объединяет строки в одну строку, вставляя между ними определенный разделитель
Удаление пробелов в начале и в конце строки:
🐍 Укус питона // 💬 Чат // #теория #строки #методы
• center(width): если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру
• find(str[, start [, end]): возвращает индекс подстроки в строке. Если подстрока не найдена, возвращается число -1
• replace(old, new[, num]): заменяет в строке одну подстроку на другую
• split([delimeter[, num]]): разбивает строку на подстроки в зависимости от разделителя
• partition(delimeter): разбивает строку по разделителю на три подстроки и возвращает кортеж из трех элементов - подстрока до разделителя, разделитель и подстрока после разделителя
• join(strs): объединяет строки в одну строку, вставляя между ними определенный разделитель
Удаление пробелов в начале и в конце строки:
🐍 Укус питона // 💬 Чат // #теория #строки #методы
Текстовые файлы. Запись в текстовый файл.
Чтобы открыть текстовый файл на запись, необходимо применить режим w (перезапись), a(дозапись) или r+/w+ (чтение и запись) . Затем для записи применяется метод write(str), в который передается записываемая строка. Стоит отметить, что записывается именно строка, поэтому, если нужно записать числа, данные других типов, то их предварительно нужно конвертировать в строку.
Запишем некоторую информацию в файл "hello.txt":
Если мы откроем папку, в которой находится текущий скрипт Python, то увидем там файл "hello.txt". Этот файл можно открыть в любом текстовом редакторе и при желании изменить.
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Чтобы открыть текстовый файл на запись, необходимо применить режим w (перезапись), a(дозапись) или r+/w+ (чтение и запись) . Затем для записи применяется метод write(str), в который передается записываемая строка. Стоит отметить, что записывается именно строка, поэтому, если нужно записать числа, данные других типов, то их предварительно нужно конвертировать в строку.
Запишем некоторую информацию в файл "hello.txt":
Если мы откроем папку, в которой находится текущий скрипт Python, то увидем там файл "hello.txt". Этот файл можно открыть в любом текстовом редакторе и при желании изменить.
🐍 Укус питона // 💬 Чат // #теория #файлы #текст
Создание и удаление объектов
Любое описание объекта в объектно-ориентированном программировании начинается с создания объекта и его удаления.
Метод new(cls[, ...]) в Python используется для создания типа класса. Он принимает тип класса в качестве первого аргумента и, обычно, возвращает этот же тип. Этот метод часто применяется для настройки создания экземпляров классов, особенно тех, которые наследуются от неизменяемых типов, таких как int, str или tuple.
init(self[, ...]) — конструктор класса. Используется при определении объектов.
init_subclass(cls) — позволяет переопределить создание подклассов объекта.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
Любое описание объекта в объектно-ориентированном программировании начинается с создания объекта и его удаления.
Метод new(cls[, ...]) в Python используется для создания типа класса. Он принимает тип класса в качестве первого аргумента и, обычно, возвращает этот же тип. Этот метод часто применяется для настройки создания экземпляров классов, особенно тех, которые наследуются от неизменяемых типов, таких как int, str или tuple.
init(self[, ...]) — конструктор класса. Используется при определении объектов.
init_subclass(cls) — позволяет переопределить создание подклассов объекта.
🐍 Укус питона // 💬 Чат // #теория #if #конструкции
🖥 Что представляет собой some-variable ?
👉 В Python двойное подчеркивание перед и после имени переменной называется "dunder" (Double underscore) и применяется для специальных методов и атрибутов, которые могут быть вызваны автоматически.
⬆️ Например, init - это специальный метод, который вызывается при создании экземпляра класса. Другие примеры включают str, len, call, iter и многие другие.
👉 Также используются "dunder" атрибуты, такие как name, module, doc, file, dict, class, all и другие, которые предоставляют информацию о модуле, классе, функции или другом объекте.
✅ Значение, которое присваивается такой переменной, зависит от контекста использования.
⬆️ Например, name - это специальный атрибут, который хранит имя текущего модуля.
❗️Рекомендуется использовать двойное подчеркивание только для специальных методов и атрибутов, имеющих специальное значение в языке Python, и избегать использования таких имен для пользовательских переменных, чтобы избежать конфликтов и непредсказуемого поведения.
👉 В Python двойное подчеркивание перед и после имени переменной называется "dunder" (Double underscore) и применяется для специальных методов и атрибутов, которые могут быть вызваны автоматически.
⬆️ Например, init - это специальный метод, который вызывается при создании экземпляра класса. Другие примеры включают str, len, call, iter и многие другие.
👉 Также используются "dunder" атрибуты, такие как name, module, doc, file, dict, class, all и другие, которые предоставляют информацию о модуле, классе, функции или другом объекте.
✅ Значение, которое присваивается такой переменной, зависит от контекста использования.
⬆️ Например, name - это специальный атрибут, который хранит имя текущего модуля.
❗️Рекомендуется использовать двойное подчеркивание только для специальных методов и атрибутов, имеющих специальное значение в языке Python, и избегать использования таких имен для пользовательских переменных, чтобы избежать конфликтов и непредсказуемого поведения.
🔮 В мире Python существует функция
Представьте себе, что вы устраиваете вечеринку и хотите собрать всех друзей в круг.
🔮 Давайте посмотрим, как это работает на практике:
🔝 В результате этого кода мы получим строку: "Привет мир я Python".
🔮 Как это работает?
🔮 Еще один пример:
🔝 Здесь мы соединили пользователей через запятую.
Таким образом, функция
str.join()
, которая действительно похожа на волшебную палочку, объединяющую слова, фразы или элементы списка в одну большую строку. Представьте себе, что вы устраиваете вечеринку и хотите собрать всех друзей в круг.
str.join()
— это как магия, которая собирает всех вместе!🔮 Давайте посмотрим, как это работает на практике:
# Допустим, у нас есть список слов
words = ["Привет", "мир", "я", "Python"]
# И мы хотим объединить их в предложение
sentence = ' '.join(words)
print(sentence)
🔝 В результате этого кода мы получим строку: "Привет мир я Python".
🔮 Как это работает?
join()
берет список (в нашем случае words
) и использует пробел ' '
в качестве "клея", чтобы соединить все слова в одну строку. Таким образом, каждый элемент списка становится частью большой строки, разделенной пробелами или любым другим символом, который мы укажем перед join()
.🔮 Еще один пример:
users = ["RimMirK", "Anuke", "compuser"]
result = ', '.join(users)
print(result) # "RimMirK, Anuke, compuser"
🔝 Здесь мы соединили пользователей через запятую.
Таким образом, функция
str.join()
предоставляет удобный способ объединения элементов списка в одну строку, используя указанный разделитель.разница между методами 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, и часто предназначен для отладки.