Python

Разбираемся с магическими методами в Python, облегчающими жизнь с ООП. Вам понравится!

Что за магические методы? 

Магические методы  —  это специальные методы в python, обрамленные двумя нижними подчеркиваниями. Они также известны как dunder методы. Многое из того, что мы делаем в Python, делается с использованием dunder методов. Посмотрите на примеры ниже: 

Мы внедрим эти методы в наши классы, чтобы сделать их интуитивно понятными. Давайте разбираться как. 

1. __init__()

Первый магический метод — это метод init. Он используется в качестве конструктора для классов в Python.

2. __str__()

При создании объектов классов очень хотелось бы видеть, что у них внутри, в легко читаемом для человека представлении. И здесь пригождается str:

Существует другой метод — __repr__() — который используется для возврата состояния объекта как он есть, но в данной статье мы пропустим этот метод.

3. __len__()

Теперь, предположим, у нас есть класс School, который хранит детальную информацию о студентах. И вот простой способ посчитать количество студентов в School.

4. __getitem__()

Нам также нужен простой способ получить доступ к записям о конкретном студенте:

5. __setitem__()

…и возможность редактировать их.

6. __getattr__() and __setattr__()

Эти методы доступны в Python автоматически при создании класса, чтобы получать и задавать его атрибуты, следовательно нам не нужно их определять. Однако мы можем сделать это, если захотим изменить их поведение. 

Например, можно изменить поведение __setattr__() для сохранения атрибута в списке, когда бы он ни был задан, чтобы легко получить доступ ко всем атрибутам. 

7. __iter__()

Мы можем создать итератор, используя метод __iter__(). Затем мы можем использовать его для доступа к данным каждого студента. 

8. __add__() и другие математические методы 

Предположим, у нас есть класс Cost.

Имеет смысл осуществлять математические операции с этими объектами  —  это сделает наш код интуитивно понятнее и элегантнее. 

Заключение

Здесь я перечислил лишь некоторые простые магические методы. Если вам интересно узнать больше, ниже список методов, которые вы можете изучить:

  • __new__
  • __del__
  • __enter__
  • __exit__

~хорошего изучения!

Читайте также:


Перевод статьи Dipam Vasani: How to be fancy with OOP in Python