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 trial

Python Object-Oriented Python Instant Objects __init__

Jake Du
Jake Du
2,369 Points

first_class setattr, task 1 no longer passing

Hey guys,

I'm not sure where my code is wrong, it keeps saying that task 1 is no longer loading. Would appreciate your help

first_class.py
class Student:
    name = "Your Name"

    def __init__(self, name, **kwargs):
        self.name = name

        for key, value in kwargs.item():
            setattr(self, key, value)

    def praise(self):
        return "You inspire me, {}".format(self.name)

    def reassurance(self):
        return "Chin up, {}. You'll get it next time!".format(self.name)

    def feedback(self, grade):
        if grade > 50:
            return self.praise()
        return self.reassurance()

2 Answers

Steven Parker
Steven Parker
231,275 Points

Any kind of syntax error will invalidate the whole code and cause the re-check of task 1 to fail.

The issue here is the spelling of the method "kwargs.item()" (singluar) instead of "kwargs.items()" (plural).

Jake Du
Jake Du
2,369 Points

thanks so much Steven! I was able to get it running after I saw the same issue. Help to have other eyes also going through your code.

Brian Hache
Brian Hache
7,611 Points

why does it need to be "items"? just because thats what ken used in his video for his game character, in what way should that relate to every other instance of kwargs

Steven Parker
Steven Parker
231,275 Points

The name of the method being used is "items". It is a built-in method available on any dictionary object. Ken did not invent it, he just shows examples of how to use it.

Brian Hache
Brian Hache
7,611 Points

okay, thanks steven.