Python Object-Oriented Python Dice Roller RPG Roller

Tarcan Yakan
Tarcan Yakan
7,511 Points

What am I doing wrong?

My code works fine in Visual Studio Code but it doesn't work here. Is there a mistake I am not seeing?

dice.py
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)
hands.py
from dice import Die, D20

class Hand(list):
    @property
    def total(self):
        return sum(self)

    @classmethod
    def roll(cls, dice_number):
        dice_list = []
        for _ in range(dice_number):
            dice_list.append(D20())
        return dice_list

1 Answer

Steven Parker
Steven Parker
201,997 Points

There's a mistake in the instructions. Instead of just the list, the challenge wants you to return an instance of Hand with the list in it.

I've submitted a bug report to the Support staff, but an additional one probably wouldn't hurt.