Ошибка вызвана оператором в randomFive
методе
self[random.randint(0,len(self)-1)]
, потому что self
является экземпляром Stack
, для которого нет __len__
метода , доступного для пользователя-определенные классы len
встроенная функция пытается вызвать ее и выдает ошибку, если ее нет (больше информации на этой теме ).
Быстроисправить можно было бы изменить его на
self[random.randint(0,len(self.stack)-1)]
, но в более долгосрочной перспективе будет лучше определить собственный метод __len__
, например
class Stack:
...
def __len__(self):
return len(self.stack)
, после этого ваш оригинальный метод randomFive
должно работать.