В этой части учебника мы рассмотрим что такое в Python магические методы класса, это достаточна важная тема, но лёгкая.
Что такое магические методы:
Для начала разберём что такое эти магические методы, если кратко говоря, то это базовые методы, которые можно назначить любому классу.
Например в Python относится таким методам, метод __init__()
или __del__()
, которые мы разбирали в части про конструкторы.
Python магические методы класса:
Стоит сказать, что я не буду показывать их все, так как их очень много но расскажу основные механики их использования.
Для начала покажу вам наверное самый популярный магический метод, это __str__()
, суть его заключается в том, что он генерирует строку, которая будет использоваться при выведи в консоль и не только.
Вот пример использования этого метода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Car: # Конструктор класса def __init__(self, marka, speed): # Назначаем свойство marka self.marka = marka # Назначаем свойство speed self.speed = speed # Выводим свойства через метод show_properties() # Создаём магический метод __str__() def __str__(self): # Возвращаем строку для вывода return "marka: {} \nspeed: {} km/ch".format(self.marka, self.speed) def main(): # Создаём объект класса Car bmv = Car("BMV", 200) # Выводим в консоль print(bmv) |
Как видите мы тут в методе __str__()
возвращаем строку с маркой нашей машины и скоростью, и более того всё это обозначили.
После мы создаём объект класса Car
и выводим его, вот что у нас получиться:
Как видите он нам вывел то, что мы хотели, таким образом можно использовать __str__()
.
Также подобные этому методы есть __int__()
, __float__()
их используют при выведи объекта виде целых чисел и сплававшей точкой соответственно.
Например когда для объекта использую функцию int()
, при выведи, и т.д..
Ещё есть подобные методы, но только для арифметических действий, например __add__(), он нужен для сложения.
Вот не большой пример его использования:
1 2 | def __add__(self, a): return self.speed + a |
Как видите мы принимаем ещё один аргумент, я его назвал a, он равен тому числу, с которым мы будем складывать, как видите мы тут складываем скорость.
Вот что получиться если мы выведем в консоль значение во время сложения:
Мы использовали для вывода эту команду print(bmv+100) и как видите получилось 300, это всё потому что мы прибавляем к скорости и возвращаем только скорость, а не всё, поэтому у нас вывелось текущие значение этого параметра.
Также есть и другие арифметические методы:
- __sub__() — Вычитание;
- __mul__() — Умножение;
- __truediv__() — Деление (x/y);
- __floordiv__() — Целочисленное деление (x // y);
- __mod__() — Остаток от деления;
- __pow__() — Возведение в степень;
Опять же это только основные методы которые есть, там ещё есть специальные для битовых операций или логических.
Вывод:
В этой части учебника вы прочитали что такое в Python магические методы класса и основы работы с ними, думаю это было полезно.