call by reference howto????

Steve Holden steve at holdenweb.com
Fri Feb 29 09:12:39 EST 2008


castironpi at gmail.com wrote:
> On Feb 29, 5:56 am, Steve Holden <st... at holdenweb.com> wrote:
>> castiro... at gmail.com wrote:
>>> On Feb 27, 6:02 pm, Tamer Higazi <n... at mail.de> wrote:
>>>> Hi!
>>>> Can somebody of you make me a sample how to define a function based on
>>>> "call by reference" ???
>>>> I am a python newbie and I am not getting smart how to define functions,
>>>> that should modify the variable I passed by reference.
>>>> thanks in advance
>>>> Tamer
>>> If it's a mutable object, avoid the pitfalls of rebinding the
>>> parameter, and just modify the object.
>>> BAD:
>>> def f( a ):
>>>    a= { 'this': 'that' }
>>> GOOD:
>>> def f( a ):
>>>    a.clear()
>>>    a[ 'this' ]= 'that'
>> BETTER:
>>
>> class Thang: pass
>>
>> def f(a):
>>      a.this = "that"
>>
>> thang = Thang()
>> f(thang)
>>
[please refrain from quoting signatures in your replies]
[better still, use a mailer that omits them from the quote!]
>> - Show quoted text -
> 
> What does __coerce__ look like, so you could operate on a.this without
> accessing 'this' member every time?  For numbers maybe, but what about
> __getattr__( self, name ): return getattr( self.this, name ) for
> strings?  Then thang.this= "that"; thang.find( 'at' ) ->
> thang.this.find( 'at' ).  Awesome!

Where did __coerce__ come from? Stick with the main party, please.

__coerce__ is an old mechanism intended to be used to bring numeric 
types into alignment, and AFAICS has nothing at all to do with whatever 
idea you are suggesting.

As near as I can make out you appear to want to have thang delegate 
certain of its method to thang.this. The easiest way to do that would be 
to implement a __getattr__() in the Thang class to do so, but remember 
that it won't be called for cases where the class has a real attribute 
with the correct name.

Hope this helps.

regards
  Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/




More information about the Python-list mailing list