Method / Functions - What are the differences?
Alf P. Steinbach
alfps at start.no
Sun Feb 28 09:08:49 EST 2010
More information about the Python-list mailing list
Sun Feb 28 09:08:49 EST 2010
- Previous message (by thread): Method / Functions - What are the differences?
- Next message (by thread): Method / Functions - What are the differences?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
* Michael Rudolf: > Out of curiosity I tried this and it actually worked as expected: > > >>> class T(object): > x=[] > foo=x.append > def f(self): > return self.x > > > >>> t=T() > >>> t.f() > [] > >>> T.foo(1) > >>> t.f() > [1] > >>> > > At first I thought "hehe, always fun to play around with python. Might > be useful sometimes" - but then It really confused me what I did. I > mean: f is what we call a method, right? But was is foo? foo is (refers to) an object that supports call notation and that forwards calls somewhere else, in this case to append on a list. You might call it (descriptive) a call forwarder, or (C# or general terminology) a delegate, or (Python 2.x) a bound method. <example> >>> "Hello".upper <built-in method upper of str object at 0x00BA16E0> >>> f = "Hello".upper >>> f <built-in method upper of str object at 0x00BA16E0> >>> f() 'HELLO' >>> >>> >>> >>> f.__self__ 'Hello' >>> f.__call__ <method-wrapper '__call__' of builtin_function_or_method object at 0x00BDD170> >>> print( f.__doc__ ) S.upper() -> str Return a copy of S converted to uppercase. >>> _ </example> A common use for delegates is as command handlers in a GUI application, and in general for event notifications. Cheers & hth., - Alf
- Previous message (by thread): Method / Functions - What are the differences?
- Next message (by thread): Method / Functions - What are the differences?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list