Steven D'Aprano wrote: > On Sat, 25 Mar 2006 21:33:24 -0800, DrConti wrote: > > >>Dear Python developer community, >>I'm quite new to Python, so perhaps my question is well known and the >>answer too. >> >>I need a variable alias ( what in other languages you would call "a >>pointer" (c) or "a reference" (perl)) > > > Others have given you reasons why you can't do this, or shouldn't do this. > In general, I agree with them -- change your algorithm so you don't > need indirect references. > > But if you can't get away from it, here is another work-around that might > help:
(snip) And another one, that mess less with attributes (but more with lookup rules - use it at your own risks !-): class CompoundAttribute(object): def __init__(self, *names): self._names = names def __get__(self, obj, objtype): if obj is None: return self return [getattr(obj, name) for name in self._names] def __set__(self, obj, value): raise TypeError, "object '%s' does not support assignement" % self import types class ObjectClass(object): def __getattribute__(self, name): v = object.__getattribute__(self, name) if not isinstance(v, types.FunctionType) \ and hasattr(v, '__get__'): return v.__get__(self, self.__class__) return v > instance = ObjectClass() instance.attribute = 'First PK Elem' instance.another_attribute = 'Second PK Elem' instance.identifier = CompoundAttribute('attribute', 'another_attribute') NB : Sorry, not tested. -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list