Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialYoussef GHALEM
Python Development Techdegree Student 4,143 PointsI 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
1 Answer
Steven Parker
231,275 PointsThe 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.