BrendanC wrote: > I'm trying to understand reflection/introspection in Python. How can I > identify the the type of attribute (e.g. instance var) in a class? > The following returns all the class attributes (methods and instance > vars). > > However I'm interested in identifying the type of value for each case > - (e.g. I'd like to identify the instance variables separately). (The > Inspect module has an ismethod method, but not an isinstancevariable > method).
Because there is no such thing, as it is not a *type*. It's a question on where the value is stored. Every *instance* has a dictionary holding it's data. You can normally access it using __dict__. But it's not "pure" in the sense that only the variables you created yourself are contained. It also contains the reference to the class. On the class, there is also a __dict__, which contains the method-descriptors and class-variables. In the face of multi-inheritance, things get even more complicated, as then the values are acquired through MRO-lookup. > e.g. In the following example I'd like to extract the class vars > strvar and intNum and ignore the methods/other attribute types. > > What is the best way to do this? > > class test: > # Dummy Class for reflection testing > strVar = '1234' > intNum = 0 > > def nullmethod(): > pass > > def addmethod(self,v1, v2): > v = v1 + v2 > return v > > if __name__ == "__main__": > mytest = test() > for key in dir(mytest): > value = getattr(object, key) > print 'Key: %s ; Value %s ' % (str(key) ,str(value)) if name in mytest.__dict__: print "instance variable" -- http://mail.python.org/mailman/listinfo/python-list