Jason Smith6,946 Points
I'm stuck! could i get some help?
i keep getting the error, 'can't find length of hand'.
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) def roll(self, dice): for die in dice: self.append(D20)
Steven Parker194,521 Points
You have the right idea, but there's a few issues:
- the passed argument will be a count, which is not iterable, but you can make an iterable using "range"
- the example shows the method called directly on "Hand", this might be a good place to use "@classmethod"
- the challenge wants you to build "an instance of Hand", so you'll need to construct one before appending to it
- the challenge is expecting to get the new instance back, so you'll need a "return"