Am 30.10.2012 14:47, schrieb Dave Angel:
I'd think the obvious solution is to move both the functions outside of
the class.  I haven't figured out the justification for staticmethod,
except for java or C++ converts.

Although I come from a C++ background, I think static functions have solid reasons that are not just based on my habits. When I see a static function in C++, I know that it is a function, not a method, so the only context it could interact with is also static (inside a namespace, including the global namespace or statically inside the class) or passed as parameters. Further, the function itself is inside a class (possibly even private), so it should only be of interest in the context of that class or instances thereof and doesn't collide with other functions.

In summary, putting utility code into a function reduces the context it interacts with. Putting that utility function as staticmethod inside a class further reduces the context of that function. Together, this also reduces the complexity of the code, making it easier to write and read.


But if you like the staticmethod for other reasons, why is it you can't
just use
       C.g()
?

This works. It's just that I find it a bit inconvenient/ugly to repeat the classname inside a class. But hey, coming from C++ I have gotten used to always writing "self." to call one member function from another, so I'll probably survive this one, too. ;)


Greetings!

Uli

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to