Scott David Daniels wrote: > Matthew Thorley wrote: > >> This may be a very rudimentary question, but here goes: > > From your questions, I believe you are not thinking of values as > being distinct from the names and data structures that refer to them. > > What is the parent of 23 in the following expression? > > 1 + 11 * 2 > > If you know that, what is the parent of 293 in the same expression? > >> If I have a simple dictionary, where the value is a class or function, >> is there an interface through which it can discover what its key is? >> Similar to index() for list. > > > def keyfor(dictionary, element): > for key, value in dictionary.iteritems(): > if value == element: # value is element if identity quest > return key > raise ValueError, element > >> On a similar note, if one object is part of another, > > This is the idea you have wrong. In C, C++, Java, and Fortran you > might have objects part of other objects, but in Python objects refer > to each other. > > How about this: > > class Holder(object): pass > > v = [1 + 11 * 2] > w = [1, v, 3] > d = {1: v} > o = Holder() > o.x = v > > What is the parent of v? > > Or even worse: > > v = [1] > v[0] = v > > What is the parent of v now? > > --Scott David Daniels > [EMAIL PROTECTED]
I see what your saying, but I my situation the values of the dictionary are unique objects created by a parent object. Sorry :(, I didn't explain that very well in my first post. When the 'root object' is 'global' I see what your saying, but when class A: def __init__(self, container): self.container=container class B(dict): def magice_get_parent(self): ... class special_value(): def __init__(self, val): self.val = val def magic_get_key(self): ... parent = A(B) parent.container[x] = special_value(1) parent.container[y] = special_value(2) parent.container[z] = special_value(1) In this example, in my mind, the following should happen, and in theory using introspecition, actualy possible. child = parent.container D.magic_get_parent() #returns parent value1 = parent.container[x] value2 = parent.container[y] value3 = parent.container[z] value1.magic_get_key() #returns x value2.magic_get_key() #returns y value3.magic_get_key() #returns z Let me know if I'm nutz! --Matthew -- http://mail.python.org/mailman/listinfo/python-list