Python Object-Oriented Python Dice Roller RPG Roller

David Moosmann
David Moosmann
17,798 Points

Can't get the solution and no error code is provided, so no idea what's wrong

What am I missing? :)

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
import D20 from dice.py

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

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

1 Answer

Steven Parker
Steven Parker
201,997 Points

The code's good. :+1: But the syntax of the import statement is a bit off:

import D20 from dice.py  # instead of this ...
from dice import D20     # ... use this