staticmethod behaviour

Samu samufuentes at gmail.com
Wed Aug 25 09:18:37 EDT 2010


On Aug 25, 3:03 pm, Samu <samufuen... at gmail.com> wrote:
> Hi,
>
> I run today into some problems with my code and I realized that there
> is something in the behaviours of the @staticmethod that I don't
> really understand. I don't know if it is an error or not, actually,
> only that it was, definitely, unexpected.
>
> I wrote a small demo of what happens.
>
> The code:http://dpaste.com/hold/233795/
>
> The answer I get:
> User created with static: id, rights, rights2
> 1 ['read', 'write'] ['write2'] ['write3']
> User created with User()
> None [] ['write2'] ['write3']
>
> I was expecting either all arrays from the second to be [] or to be a
> copy of the first one.
>
> If someone can provide an explanation, I would be thankful :)
>
> Regards,
> Samu

In addition, if I don't define the function as static, but either as a
method of the object or a function outside of the class, something
like this:
def cr_user():
    user = User(1, ['read'], rights3=[])
    user.rights.append('write')
    user.rights2.append('write2')
    user.rights3.append('write3')
    return user

I get instead:
User created with static: id, rights, rights2
1 ['read', 'write'] ['write2'] ['write3']
User created with User()
None [] ['write2'] []

There is some (maybe deep) concept that I don't get it seems, because
that output puzzles me...



More information about the Python-list mailing list