On Sat, May 8, 2010 at 4:50 PM, ben <thomasstr...@gmail.com> wrote: > Why doesn't this work: > > class C1: > def f1(self): > print("f1") > > class C2(C1): > f1() > > > It throws this error: > > Traceback (most recent call last): > File "./c1.py", line 7, in <module> > class C2(C1): > File "./c1.py", line 8, in C2 > f1() > NameError: name 'f1' is not defined > > > f1() is an attribute of class C1, C2 inherits C1, so why can't it see > it?
The way classes work in Python, C2 isn't actually created until after its body suite has been executed, so that's why Python can't find f1. Additionally, it makes no sense to call an *instance* method such as f1() in a class context. Or in Java-speak: you can't call a non-static method in a static context. Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list