Static class methods
alex at shindich.com
Sun Mar 4 23:22:10 CET 2001
Just out of my curiosity, have any of you ladies and gentlemen experienced a
need for an equivalent of C++/Java static method?
Because I have, but it is impossible add them to Python classes -- all class
methods are treated as instance methods.
This is especially unfortunate given that local functions now work properly
thanks to PEP 227.
I was thinking that a new keyword "unbound" could be used to identify
functions that belong to a class but do not expect "self" as their first
>From outside the class "unbound" methods would be invoked by specifying the
class name -- Foo.my_static_method (). From within the class they would work
similar to local functions that are defined at the class level. The __ trick
should work for the "unbound" methods as well to allow for creation of
private static methods.
"""This is a sample class..."""
__myPrivateStaticVariable = None
unbound getMyPrivateStaticVariable ():
"""getMyPrivateStaticVariable (obj) -> obj
This method returns the value stored in private static variable...
unbound modifyMyPrivateStaticVariable (obj):
"""modifyMyPrivateStaticVariable (obj) -> void
This method assigns obj to the private static variable...
Foo.__myPrivateStaticVariable = obj
>>> type (Foo.modifyMyPrivateStaticVariable)
<type 'unbound method'>
>>> type (Foo.getMyPrivateStaticVariable ())
>>> Foo.modifyMyPrivateStaticVariable ("abc")
>>> Foo.getMyPrivateStaticVariable ()
More information about the Python-list