[IronPython] staticmethod / classmethod and setattr
Michael Foord
fuzzyman at voidspace.org.uk
Thu Feb 7 00:44:37 CET 2008
Not really an answer but possibly an explanation. staticmethod and
classmethod are descriptors that wrap callable objects. Because they are
implemented in C they us __slots__ and you can't set arbitrary
attributes on them.
Michael
Curt Hagenlocher wrote:
> This is really more of a Python question than an IronPython question,
> but I'm not currently on any non-Iron Python lists. :)
>
> The following definition results in an error under both CPython 2.5
> and IronPython. Decorating a method as static or class prevents
> attributes being set on the resulting definition.
>
> def decorate(obj):
> obj.decorated = True
> return obj
>
> class X:
> @decorate
> @staticmethod
> def foo():
> pass
>
> Does anyone know the "why" of this behavior?
>
> I can work around this problem by declaring the decorators in the
> opposite order, but it seems like an odd imposition to put on the
> consumers of the code in question. I'm worried that I'm missing
> something about the expected semantics of these standard functions.
>
> --
> Curt Hagenlocher
> curt at hagenlocher.org <mailto:curt at hagenlocher.org>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
More information about the Ironpython-users
mailing list