En Mon, 16 Jul 2007 14:25:48 -0300, JonathanB <[EMAIL PROTECTED]> escribió:
> Ok, I know there has to be a way to do this, but my google-fu fails me > (once more). I have a class with instance variables (or should they be > called attributes, I'm newish to programming and get really confused > with OO sometimes), like the one in this example: > > class Foo(): > self.a = "bar" > self.z = "test" > self.var = 2 > > foo = Foo() > > I want to print a list of the variables (strings, integers, etc) in > Foo, without knowing their names. So that the user who needs to change > a peice of information can view the variable list, enter the name of > the variable they need to change and then make the change. This is You should define more precisely *which* attributes do you actually want in the list, but I think this may serve as a starting point: py> def get_attributes(obj): ... return [attr for attr in dir(obj) if not attr.startswith('_') and ... type(getattr(obj,attr)) in ( ... int,str,unicode,float,dict,list,tuple)] ... py> f=open("c:\\test.py") py> get_attributes(f) ['mode', 'name', 'softspace'] The list keeps only the types explicitely enumerated. Other types are excluded, as well as names starting with "_". Another criterion would be `not attr.startswith('_') and not callable(getattr(obj,attr))` -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list