Jake Williams2,434 Points
RPG Roller challenge part 2.
I found three different answers regarding this particular challenge and none of them seem to be working out for me. What am I doing wrong?
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, num_of_dice): Hand = cls() for _ in range(num_of_dice): Hand.append(num_of_dice()) return (Hand())
Chris FreemanTreehouse Moderator 65,221 Points
Hey Jake Williams, Here some errors to fix:
the item appended should be an
D20()instance, not "num_of_dice"
- the object return should be the object created "Hand" not "Hand()"
Other areas to fix (not needed to pass, but good coding practice:
- Do not use the class name
Handas a local method variable name. In class methods,
selfis a good name to use since you are creating an instance.
Post back if you need more help. Good luck!!