Why no lexical scoping for a method within a class?

walterbyrd walterbyrd at iname.com
Wed Dec 17 10:19:32 EST 2008


For a language as well structured as Python, this seems somewhat
sloppy, and inconsistant.  Or is there some good reason for this?

Here is what I mean:

def a():
    x = 99
    print x

def b():
    print x

a()
b() # raises an exception because x is not defined.

However in the methods are within a class, the scoping seems to work
differently.

class ab():
    def a(self):
        self.x = 99
        print self.x
    def b(self):
        print self.x

i = ab()
i.a()
i.b() # this works, why no lexical scoping?



More information about the Python-list mailing list