Pass by reference or by value?

Robert Dailey rcdailey at gmail.com
Fri Aug 17 00:26:09 CEST 2007


Thanks Steve for your explanation. It was very helpful. I think I understand
it now. By the way, by the .set method I meant:

class Integer:
    def __init__( self, number=0 ):
       self._int = number

    def set( self, number ):
       self._int = number


# later on....

mutableInt = Integer( 5 )
def change_me( var ):
    var.set( 6 )


Of course, I'd probably use overloaded operators in a more realized example.


On 8/16/07, Steve Holden <steve at holdenweb.com> wrote:
>
> Robert Dailey wrote:
> > So immutable objects cannot be modified directly? I guess this means
> > integers are immutable and the act of assigning to one is a completely
> > new definition?
>
> Correct. A new value is bound to the name or item on the left-hand side
> - remember, all variables are pointers to values, there's no way to
> replace the value of a variable because of the automatic dereferencing.
> And yes, immutable objects can't be modified. At all, period. Hence the
> name.
>
> >                 So if I were to create a class called Integer and give
> > it a .set() method, this would allow me to create mutable integers, and
> > thus passing in an object of type class Integer would allow me to modify
> > the value from inside the function?
> >
> Well, the .set() method wouldn't be called automatically on an
> assignment statement but yes, if you passed an Integer object into your
> function and called its .set() method from inside then it should work.
>
> As long as you get your mutable integer implementation correct, of
> course ;-). I'd suggest delegating everything except the .set() method
> to the underlying integer value.
>
> regards
>   Steve
> --
> Steve Holden        +1 571 484 6266   +1 800 494 3119
> Holden Web LLC/Ltd           http://www.holdenweb.com
> Skype: holdenweb      http://del.icio.us/steve.holden
> --------------- Asciimercial ------------------
> Get on the web: Blog, lens and tag the Internet
> Many services currently offer free registration
> ----------- Thank You for Reading -------------
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20070816/557e5606/attachment.html>


More information about the Python-list mailing list