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