Youssef GHALEMPython Development Techdegree Student 4,143 Points
I got this message : Can't get the length of a `Hand` eventhough I'm not asked to provide the __len__ meth for hand cld
Check my code please
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)
from dice import D20 class Hand(list): @property def total(self): return sum(self) def roll(self, number_of_dice) : slots =  for _ in range(number_of_dice) : slots =  slots.append(D20()) return slots
Steven Parker201,997 Points
The message may be confusing, but it just means that something is wrong with the class. Issues I notice:
- the instructions ask for a classmethod, but the decorator that creates one is missing
- the loop keeps setting "slots" to an empty list (so it never has more than one item in it)
- the method is returning the list itself instead of a new instance with the list in it
About that last issue, I recall distinctly that being a requirement of this challenge (and it still is, I tried it); but the instructions seem to have been recently changed to say "Then return the list"! So the instructions are no longer correct.
Please report this to the Support staff and collect your "Exterminator" badge for being the first to find it.