strange problem with def in class

James Henderson james at logicalprogression.net
Tue Aug 17 21:08:05 EDT 2004


A couple of quick corrections.

James Henderson wrote:

> Hi Johan
> 
> Other variables defined in a class are in a scope that cannot be 
> accessed directly from within a method (Python newish nested scoping 
> only works for functions inside functions).

Actually it works for classes defined inside functions too, but that's 
not relevant here. :)

> Personally I would move your readline() function outside the class to 
> the module level.

This still stands!

> If you want to keep it in the class then either give it a self parameter 
> or add "readline = staticmethod(readline)" after the definition of 
> readline().  Then you can call it from within __init__() as 
> self.readline(filename).

Looking at your code again the static method option is not viable.  Your 
readline() method needs a self parameter because the code you intend to 
put into it refers to self.

J






More information about the Python-list mailing list