Class Methods help

Jean-Michel Pichavant jeanmichel at sequans.com
Mon Jun 1 09:30:38 EDT 2009


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.1296 at 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
>>
>>     




More information about the Python-list mailing list