Welcome to the Treehouse Community
The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.
I don't understand how to do this
I know I'm not doing this right, but to be honest I don't know exactly how to do it. Any help would be much appreciated!
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, sides=20): super().__init__(sides)
from dice import D20 class Hand(list): @property def total(self): return sum(self) @classmethod def roll(cls, number_of_dice): hand = Hand() for die in number_of_dice: hand.append(D20(die)) return hand
Chris FreemanTreehouse Moderator 67,778 Points
Hey Amy Murphy, you’re very close:
- need to use
hand = cls()instead of
Hand()since Hand is not yet fully defined
- need to use
for die range(number_of_dice):to repeat based on count.
- need to append
D20()as using D20(die) would append a n-sided die where n is the number_of_die
Not sure why
D20 taking an argument passes the challenge. It should have been coded with no
sides parameter and the call to
die(20) fix with 20.
Post back if you need more help. Good luck!!!