On Fri, 13 May 2011, Terry Carroll wrote:

For my specific case, I'm going to go with a Plan B of using callbacks; and provide default unbound callbacks present in the module, but not defined in the class itself.

Here's a callback-with-default approach, which works:

### Thing.py ############
def add_the_stuff(obj, s1):
    obj.stuff.append(s1)

class Thing(object):
    def __init__(self, callback=add_the_stuff):
        self.stuff = []
        self.cb=callback
    def addstuff(self, text):
        self.cb(self, text)
#########################

##### toy2.py ###########
import Thing

A = Thing.Thing()
A.addstuff("ABCDEFG")
print A.stuff

def addlower(obj, s2):
    obj.stuff.append(s2.lower())

B = Thing.Thing(callback=addlower)
B.addstuff("WXYZ")
print B.stuff
########################

Which produces, as expected:

toy2.py
['ABCDEFG']
['wxyz']

But still...

But I'd still like to have a better understanding of how the call gets transmuted from a two-argument call to a one-argument call based upon the target.
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to