En Sat, 20 Oct 2007 06:03:55 -0300, sccs cscs <[EMAIL PROTECTED]> escribi�:
> Hello, > I like create a methode that display all the properties of an instance > of classe with their value. > I try the following code: see def __str__ (self) methode. > But it displays only the instance attributes values not the properties > and their value. > In pseudo-code: > For Each Properties : > print property_name, property_value > > It is possible ? Where is the collection of properties into the Python > Object Metamodele? Is this what you want, using dir()? py> class A(object): ... x = 1 ... @property ... def y(self): return 2 ... py> a=A() py> a.z=3 py> py> dir(a) ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', 'x', 'y', 'z'] py> for name in dir(a): ... if name[:1]=='_': continue ... print name, getattr(a,name) ... x 1 y 2 z 3 py> You may want to filter out some values, methods by example. If you usually don't store functions as attributes, checking if the attribute itself has a __call__ attribute may be enough: py> class B(A): ... def method1(self): pass ... @classmethod ... def method2(cls): pass ... @staticmethod ... def method3(): pass ... def foo(self): ... self.some_var = 1 ... def some_function(a): ... return "hello!" ... self.some_function = some_function ... py> b=B() py> b.foo() py> dir(b) ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', 'foo', 'method1', 'method2', 'method3', 'some_function', 'some_var', 'x', 'y'] py> for name in dir(b): ... if name[:1]=='_': continue ... value = getattr(b,name) ... if hasattr(value, '__call__'): continue ... print name,'=',value ... some_var = 1 x = 1 y = 2 py> -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list