Dear tutors

In learning about the __call__ magic method, in the code below I
deliberately omitted __call__ and, as expected, I got the error message
"TypeError: 'Test' object is not callable". But I am surprised that the
print statement was not executed, even though the interpreter sees it
first. Why is that?

I thought that the Python interpreter executes line by line. That is, in
the code below,:
-First, it executes the class definition because these 2 lines are what it
sees first
-Second, it creates an instance of the class Test, called test
-Third, it executes the print statement
-Only then would it encounter the error of calling the instance as if it
were callable

class Test(object):
    pass
test  = Test()
print "I am puzzled. Why isn't this line printed?"
test()

Making the puzzle worse for me, when I tried adding another print statement
before the test = Test() line, the interpreter behaved as I expected!

Trung
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to