Python Object-Oriented Python Dice Roller RPG Roller

Mathew Yangang
Mathew Yangang
Python Web Development Techdegree Student 4,433 Points

RPG 2/2

I am completely lost on the second challenge. Any help will be appreciated

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)

1 Answer

Jeff Muday
MOD
Jeff Muday
Treehouse Moderator 21,420 Points

I find this challenge a little confusing myself, but a deeper read of the requirements yields some hints.

IMPORTANT: "I'm going to use code similar to Hand.roll(2) and I want to get back an instance of Hand with two D20s rolled in it."

This means roll() needs to be a class method. You will have to review the video to understand that.

# make sure to import the D20 since we need to use it.
from dice import D20

class Hand(list):

    # note you may also want to put in a dunder init
    def __init__(self, numdice):
        # your code goes here

    @property
    def total(self):
        return sum(self)

    @classmethod
    def roll(cls, numdice):
        # your code goes here

Give it a shot and if you fail, ask for more hints. ;-) Note, you can SEARCH the Community for comments from other students that have gotten stuck on this!