Best place for a function?

Diez B. Roggisch deets at nospam.web.de
Wed Mar 7 17:30:10 EST 2007


Sergio Correia schrieb:
> I'm writing a class, where one of the methods is kinda complex. The
> method uses a function which I know for certain will not be used
> anywhere else. This function does not require anything from self, only
> the args passed by the method.
> 
> Where should I put the function?
> 
> a) Inside the module but outside the class (to avoid cluttering it;
> besides the function does not require to access any property or method
> of the class).
> 
> # mymodule.py
> 
> def  _myfunction():
>     ...
> 
> class myclass(object):
>     def mymethod(self):
>          ...
>          spam = _myfunction()
>    ...
> 
> 
> b) Inside the class but outside the method
> 
> # mymodule.py
> 
> class myclass(object):
>     def  _myfunction(self):
>         ...
> 
>     def mymethod(self):
>          ...
>          spam = self._myfunction()
>    ...
> 
> c) Inside the method:
> 
> # mymodule.py
> 
> class myclass(object):
>     ...
>     def mymethod(self):
>         def  _myfunction(self):
>                   ...
>         ...
>         spam = self._myfunction()
>     ...
> 
> 
> I'm new to python (and couldn't find anything about this in PEP 8).
> What would you suggest me?

If it really has no other use as in this class, put it as an 
instancemethod in there. Alternatively, you _could_ nest it like this:

class Foo(object):

    def bar(self):
        def my_long_important_method(argument):
            pass
        pass


Diez



More information about the Python-list mailing list