Ah, see, I should convince my bosses that I need a Python interpreter. Of course, then they'd ask what Python was, and why I was thinking about it at work....
Duh, I was just reading the docs, and I kept thinking that an attribute was just a class variable. Thanks, Kent, now I have all sorts of interesting experiments to undertake... On Sun, 20 Feb 2005 07:26:54 -0500, Kent Johnson <[EMAIL PROTECTED]> wrote: > Liam Clarke wrote: > > Hi, > > > > just an expansion on Brian's query, is there a variant of getattr for > > instance methods? > > > > i.e. class DBRequest: > > def __init__(self, fields, action): > > self.get(fields) > > > > def get(self, fields): > > print fields > > > > > > Instead of self.get in _init__, the value of action to call a > > function? Or, is it going to have to be dictionary dispatch? > > I don't understand your example, but instance methods are attributes too, so > getattr() works with > them as well as simple values. > > An instance method is an attribute of the class whose value is a function. > When you access the > attribute on an instance you get something called a 'bound method' which > holds a reference to the > actual function and a reference to the instance (to pass to the function as > the 'self' parameter). > You can call a bound method just like any other function. So: > > >>> class foo: > ... def __init__(self): > ... self.bar = 3 > ... def baz(self): > ... print self.bar > ... > >>> f=foo() > > getattr() of a simple attribute: > >>> getattr(f, 'bar') > 3 > > getattr() of an instance method returns a 'bound method': > >>> getattr(f, 'baz') > <bound method foo.baz of <__main__.foo instance at 0x008D5FD0>> > > Calling the bound method (note the added ()) is the same as calling the > instance method directly: > >>> getattr(f, 'baz')() > 3 > > Of course you can do the same thing with dot notation for attributes: > >>> b=f.baz > >>> b > <bound method foo.baz of <__main__.foo instance at 0x008D5FD0>> > >>> b() > 3 > > Kent > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > -- 'There is only one basic human right, and that is to do as you damn well please. And with it comes the only basic human duty, to take the consequences. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor