FYI, same without decorators, if you python version does not support it.

class MyClass:
   def  some_func(x):
       return x+2
   some_func = staticmethod(some_func)


JM

bd satish wrote:
Thanks to Tim Chase & Lie Ryan !!  That was exactly what I was looking for !!

It's time for me to now read the documentation of "decorators" and
@classmethod and also @staticmethod.

I'm quite new to decorators...


-- Satish BD


On Sun, May 31, 2009 at 4:44 PM, Lie Ryan <lie.1...@gmail.com> wrote:
bdsatish wrote:
Hi,

    I have a question regarding the difference b/w "class methods" and
"object methods". Consider for example:

class  MyClass:
    x = 10

Now I can access MyClass.x -- I want a similar thing for functions. I
tried

class MyClass:
    def  some_func(x):
        return x+2

When I call MyClass.some_func(10) -- it fails, with error message:


TypeError: unbound method some_func() must be called with MyClass
instance as first argument (got int instance instead)

OK. I figured out that something like this works:
obj = MyClass()
y = obj.some_func(10)

BUT, this means that we have functions applying for instances. That is
we have "instance method". Now, how do I implement some function which
I can invoke with the class name itself ? Instead of creating a dummy
object & then calling.... In short, how exactly do I create "class
methods" ??
with staticmethod decorator:

class MyClass:
...     @staticmethod
...     def some_func(x):
...         return x+2
...
MyClass.some_func(10)
12

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


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

Reply via email to