How to use a class property to store function variables?

Chris Rebert clp2 at rebertia.com
Tue Apr 27 19:43:56 EDT 2010


On Tue, Apr 27, 2010 at 4:36 PM, GZ <zyzhu2000 at gmail.com> wrote:
> I want to store a reference to a function into a class property.
>
> So I am expecting that:
>
> class A:
>     fn = lambda x: x
>
> fn = A.fn
> fn(1)
>
> Traceback (most recent call last):
>  File "<string>", line 1, in <string>
> TypeError: unbound method <lambda>() must be called with A instance as
> first argument (got int instance instead)
>
>
> The problem is that A.fn is treated as a bounded method. I really want
> A.fn to be a variable that stores a reference to a function. Is there
> any way to achieve this?

Use the staticmethod() decorator:

class A(object):
    @staticmethod
    def fn(x):
        return x

#rest same as before

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list