Patrick Brusven6,607 Points
Can't figure out why my code isn't passing, as it seems to produce what the question is asking for?
I type, python -I hands.py, in console, and run Hand.roll(2).This produces a list containing two numbers, or D20s as the question is asking for. Any advice here is greatly appreciated, especially if it gives me clues to find the answer on my own. Thanks in advance!
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): rolls =  for _ in range(num_of_dice): a = D20() rolls.append(a.value) return cls(rolls)
Steven Parker201,997 Points
The challenge wants you to load the new Hand with entire D20 objects, not just their "value" attributes.