Коробка с питоном
530 subscribers
49 photos
128 links
Заметки от Python-разработчика: сниппеты, обзоры пакетов, новости и другая полезная информация.
Download Telegram
По возможности используйте специальные (магические) методы

Специальные методы позволяют вашему коду быть более выразительным и "питонячим". Этот простой пример на скриншоте покажет вам огромную выгоду от реализации двух специальных методов: __getitem__ и __len__.

Теперь, как и для любой стандартной коллекции вы можете вызвать функцию len(), которая вернет количество карт:
>>> deck = Deck()
>>> len(deck)
36

А что, если мы хотим получить последнюю карту? Для этого у нас реализован __getitem__:
>>>deck[-1]
Card(rank='Т', suit='бубны')

Получить случайную карту в колоде? Не проблема:
>>>import random
>>>random.choice(deck)
Card(rank='8', suit='трефы')

Как видим - использовать специальные методы очень даже выгодно. Как минимум, это открывает вам богатства взаимодействия с стандартной библиотекой и предоставит простой и понятный интерфейс взаимодействия с классом - нет нужды, например, писать метод для получения случайного элемента в массиве.

Код на Github
#std