По возможности используйте специальные (магические) методы
Специальные методы позволяют вашему коду быть более выразительным и "питонячим". Этот простой пример на скриншоте покажет вам огромную выгоду от реализации двух специальных методов:
Теперь, как и для любой стандартной коллекции вы можете вызвать функцию
Код на Github
#std
Специальные методы позволяют вашему коду быть более выразительным и "питонячим". Этот простой пример на скриншоте покажет вам огромную выгоду от реализации двух специальных методов:
__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