spell method chaining?
Just van Rossum
just at letterror.com
Fri Jun 8 13:57:19 EDT 2001
More information about the Python-list mailing list
Fri Jun 8 13:57:19 EDT 2001
- Previous message (by thread): spell method chaining?
- Next message (by thread): spell method chaining?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Remco Gerlich wrote: > > Robin Becker <robin at jessikat.fsnet.co.uk> wrote in comp.lang.python: > > I wish to create wrapped classes dynamically and have the wrapper class > > refer to the base wrapee class methods. > > > > def gen(B): > > class W(B): > > def __init__(self): > > B.__init__(self) > > return W > > > > this works if nested scopes is on so that the reference to B in the > > __init__ refers to the argument of gen, but it fails without it unless B > > happens to be a global. I thought of using self.__class__.__bases__[0] > > to refer to the dynamic base B, but then that fails if I use the > > resultant class as a base class. > > > > ie if I try > > > > def gen(B): > > class W(B): > > def __init__(self): > > self.__class__bases__.__init__(self) > > return W > > > > I get trouble (infinite looping) with gen(gen(B))() > > > > What is the correct way for dynamic classes to refer to their immediate > > base class methods to allow method chaining etc. > > Usually you know that the base class is called eg Klass, and you simply call > that. In this case I think you have to store it inside the class manually, > like this: > > def gen(B): > class W(B): > def __init__(self): > self.__base.__init__(self) > W._W__base = B > return W > > (not the automatic 'name munging' the self.__base does, this way the > attribute is somewhat protected from classes inheriting it) You can avoid that by spelling it like this: def gen(B): class W(B): __base = B def __init__(self): self.__base.__init__(self) return W Just
- Previous message (by thread): spell method chaining?
- Next message (by thread): spell method chaining?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list