Smith, Jeff wrote: > I can see I wasn't clear :-) > > Here's the basic framework of what I'm looking for. Needless to say, > this is just an example and not the real problem which is quite > complicated and includes multiple classes. > > What I'm looking for is the actual implementation of get_props_as_dict > which I've written here as pseudo-code > > class MyClass: > def __init__(self): > self._var1 = val1 > self._var2 = val2 > > var1 = property(lambda s: s._var1) > var2 = property(lambda s: s._var2) > > def _var3(self): > return self._var1 + self._var2 > > var3 = property(_var3) > > def getprops_as_dict(self): > d = dict() > for prop in properties: > d[prop_name] = prop_value > return d
Still not that clear. What do you want to see when you call MyClass().getprops_as_dict() ? Maybe this will give you some ideas: >>> class MyClass: ... def __init__(self, val1, val2): ... self._var1 = val1 ... self._var2 = val2 ... var1 = property(lambda s: s._var1) ... var2 = property(lambda s: s._var2) ... def _var3(self): ... return self._var1 + self._var2 ... var3 = property(_var3) ... def getprops_as_dict(self): ... d = dict(self.__dict__) ... return d ... >>> m=MyClass(1,2) Using just m.__dict__: >>> m.getprops_as_dict() {'_var2': 2, '_var1': 1} The inspect module might be some help: >>> import inspect >>> for k, v in inspect.getmembers(m): ... print k, '=', v ... __doc__ = None __init__ = <bound method MyClass.__init__ of <__main__.MyClass instance at 0x008DD918>> __module__ = __main__ _var1 = 1 _var2 = 2 _var3 = <bound method MyClass._var3 of <__main__.MyClass instance at 0x008DD918>> getprops_as_dict = <bound method MyClass.getprops_as_dict of <__main__.MyClass instance at 0x008DD918>> var1 = 1 var2 = 2 var3 = 3 This inspects the class for actual properties and shows their values. It won't print simple attributes (in m.__dict__) or attributes defined by user-defined descriptors though: >>> for p in dir(m.__class__): ... pp = getattr(m.__class__, p) ... if isinstance(pp, property): ... print p, '=', getattr(m, p) ... var1 = 1 var2 = 2 var3 = 3 Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor