Welcome to the Treehouse Community
Looking to learn something new?
Gene Holt6,620 Points
Comparing and Combining Dice error
When running the code, I get an error that there was an unexpected keyword argument 'sides'. I don't see what I did wrong. I watched the video maybe a dozen times to see if I typo'd something but I just don't see it.
class Die: def init(self, sides = 2, value = 0): if not sides >= 2: raise ValueError("Must have at least 2 sides") if not isinstance(sides, int): raise ValueError("Sides must be whole number") self.value = value or random.randint(1, sides)
def __init__(self): return self.value def __eq__(self, other): return int(self) == other def __ne__(self, other): return not int(self) == other def __gt__(self, other): return int(self) > other def __lt__(self, other): return int(self) < other def __ge__(self, other): return int(self) >= other def __le__(self, other): return int(self) <= other
class D6(Die): def init(self, value = 0): super().init(sides = 6, value = value)
d6 = D6()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/treehouse/workspace/yatzy/dice.py", line 36, in init
super().init(sides = 6, value = value)
TypeError: init() got an unexpected keyword argument 'sides'
Steven Parker216,175 Points
It's difficult to read without formatting, but the code for "Die" class includes this method definition:
def __init__(self): return self.value
Clearly, this method takes no arguments. But when it is called from "D6":
super().__init__(sides = 6, value = value)
Two keyword arguments are being passed to it. These will be "unexpected".
In future postings, always use the instructions for code formatting in the Markdown Cheatsheet pop-up below the "Add an Answer" area. Or watch this video on code formatting.