Python Object-Oriented Python Dice Roller RPG Roller

Bailee Cruger
Bailee Cruger
2,184 Points

I used @classmethod and while it runs great when I do it myself, I keep getting told that it's not running?

When I run this myself workspace and a python shell this appears to work. But I'm getting told this doesn't run when I submit it. Does anyone know why? Thanks!

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
class Hand(list):
    @property
    def total(self):
        return sum(self)

    @classmethod
    def roll(cls, dice):
        listdice=[]
        for n in range(dice): 
            n=D20()
            listdice.append(n)
        return cls(listdice)

1 Answer

Steven Parker
Steven Parker
201,957 Points

In "hands.py", you just need "from dice import D20".