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