Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Python Object-Oriented Python Instant Objects Method Interactivity

Guy Lorshbaugh
seal-mask
PLUS
.a{fill-rule:evenodd;}techdegree seal-36
Guy Lorshbaugh
Python Development Techdegree Graduate 10,892 Points

Defining Methods in Methods?

This seemed like a pretty straightforward challenge, with an if statement pointing to two methods already laid out in the class. But I'm getting "Exception: name 'praise' is not defined" I can't figure out what definition is required, or if I need to pas arguments through, or what. It's got my head spinning.

I've watched the two videos leading up to this assignment over three or more times each and I'm not finding any clarification, The questions and answers other are exchanging don't seem to pertain to my issue, or I'm simply not understanding them either. Am I missing something in these lessons, or did I miss something farther back? I'm totally flummoxed.

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

    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: 
            Student.praise()
        else:
            Student.reassurance()

1 Answer

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 67,638 Points

You are very close! To refer to methods of an instantiated model, use the self reference. The self is part of the parameter list and contains a reference to the current instance.

Side note: Using Student.<method_name> would be almost correct if you meant to reference class methods. A class method is decorated with @classmethod and the first parameter is typically "cls" to signify the reference is to the class and not to an instance of the class. The reference would then be cls.<method_name>.

Post back if you need more help. Good luck!!