Kohei Ashida4,881 Points
Why can't it be  to create a list instead of cls() in RPG Roller 2 of 2?
I've already solved this challenge but I have one thing not clear.
In hands.py, I tried to create a list with
rolled =  but I got "Bammer!" then I changed it to
cls() and I got "well done". Is it because
Hand() is subclass of list? even if yes, I'm still unclear why
 doesn't work here... Could someone tell me why is it?
import random class Die: def __init__(self, sides=2): if sides < 2: raise ValueError("Can't have fewer than two sides") self.sides = sides self.value = random.randint(1, sides) def __int__(self): return self.value def __add__(self, other): return int(self) + other def __radd__(self, other): return self + other class D20(Die): def __init__(self): super().__init__(sides=20)
from dice import D20 class Hand(list): @property def total(self): return sum(self) @classmethod def roll(cls, size): rolled = cls() # why can"t it be  to create a list instead of cls()? for _ in range(size): rolled.append(D20()) return rolled
Steven Parker201,997 Points
The challenge asks you to return an instance of the class instead of just a plain list.