Static class methods
alex at shindich.com
Mon Mar 5 04:17:52 CET 2001
That will indeed work. But it's plain ugly.
Thanks for sharing the trick though!
"Chris Tavares" <ctavares at develop.com> wrote in message
news:0bDo6.16804$7Y1.1656672 at newsread2.prod.itd.earthlink.net...
> Try this:
> >>> class Foo:
> ... class FooMethods:
> ... def foo1(self):
> ... print "FooMethods.foo1"
> ... class_methods = FooMethods()
> >>> foo = Foo()
> >>> foo.class_methods.foo1()
> >>> Foo.class_methods.foo1()
> "Alex Shindich" <alex at shindich.com> wrote in message
> news:rdzo6.154$gc4.80445 at news.pacbell.net...
> > Just out of my curiosity, have any of you ladies and gentlemen
> > need for an equivalent of C++/Java static method?
> > Because I have, but it is impossible add them to Python classes -- all
> > methods are treated as instance methods.
> > This is especially unfortunate given that local functions now work
> > 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
> > attribute.
> > From outside the class "unbound" methods would be invoked by specifying
> > class name -- Foo.my_static_method (). From within the class they would
> > similar to local functions that are defined at the class level. The __
> > should work for the "unbound" methods as well to allow for creation of
> > private static methods.
> > Examples:
> > >>>class Foo:
> > """This is a sample class..."""
> > __myPrivateStaticVariable = None
> > unbound getMyPrivateStaticVariable ():
> > """getMyPrivateStaticVariable (obj) -> obj
> > This method returns the value stored in private static
> > """
> > return Foo.__myPrivateStaticVariable
> > 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 ())
> > <type 'None'>
> > >>> Foo.modifyMyPrivateStaticVariable ("abc")
> > >>> Foo.getMyPrivateStaticVariable ()
> > "abc"
> > >>>
More information about the Python-list