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 (retired) Objects Create a Class with a Method

Y B
Y B
14,136 Points

why is this method wrong?

This doesn't seem to pass the objective check, but I've no idea why?

method.py
class Store():
  open = 9
  close = 5

  def hours(self):
    return "We're open from {} to {}.".format(open, close)

3 Answers

Hey Y B !

It looks like you might have an issue with variable scope :)

So, in your hours method, you need to use self to access open and close like so:

return "We're open from {} to {}.".format(self.open, self.close)

This way, you are referencing the variables open and close that are members of the Store class and not variables that the compiler expects to be defined locally within the hours method.

Hi YB

The reason your not getting the desired result is because in your hours method you are trying to access the open and close properties without referencing the current instance.

do it this way

class Store():
    open = 9
    close = 5

    def hours(self):
        return "We're open from {} to {}.".format(self.open,self.close)
Y B
Y B
14,136 Points

Thanks for your answers,that makes it so much clearer and is a big help.

Thanks.