[EMAIL PROTECTED] wrote:
kj:
OK, I guess that in Python the only way to do what I want to do
is with objects...

There are other ways, like assigning the value out of the function,
because Python functions too are objects:

...
But I suggest you to use a class in this situation, it's often the way
that will keep your code more bug-free, and more readable by near-
casual readers too. Python philosophy asks you to write readable code
instead of clever code when possible, this is a difference from Perl,
I presume.

Bye,
bearophile

Here's a solution using decorators, I like it, but I'm biased:

def staticAttrs(**kwds):
        """
        Adds attributes to a function, akin to c-style
        "static" variables
        """
        
        def _decorator(fcn):
                for k in kwds:
                        setattr(fcn, k, kwds[k])
                return fcn
        return _decorator



@staticAttrs(n=0)
def rememberCalls():
        """
        >>> rememberCalls()
        0
        >>> rememberCalls()
        1
        >>> rememberCalls()
        2
        """
        print rememberCalls.n
        rememberCalls.n += 1

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

Reply via email to