Python Object-Oriented Python Dice Roller RPG Roller

srav
PRO
srav
Pro Student 1,784 Points

need help with Dice Challenge

I am getting an error message 'Didn't get correct total for Hand.total'. When I create an instance of Hand and call .total seems to return correct value. Can some 1 help ?

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, *args, **kwargs):
        super().__init__(sides = 20)
hands.py
from dice import D20

class Hand(list):
    dies = []
    def __init__(self, *args, **kwargs):
        pass

    def __len__(self):
        return len(self.dies)

    def __iadd__(self, other):
        return int(self) + other

    @classmethod
    def roll(cls, number):
        hand = Hand()
        for i in range(number):
            hand.dies.append(D20())
        return hand

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

    def __iter__(self):
        for die in self.dies:
            yield die

2 Answers

srav
PRO
srav
Pro Student 1,784 Points

I typed in the same code. It didn't work. I pasted the same again and it accepted it. Its little weird to me. But thanks for looking into !!