Franz Steinhaeusler wrote: > Hello NG, > > I want to retrieve the members of a class > with a baseclass. > But the problem is, how to get the non derived > members. > > class a: > def who(self): > print "who" > def __init__(self): > self._a = 3 > > class b(a): > def who1(self): > print "who1" > def __init__(self): > a.__init__(self) > self._b = 4 > > y=b() > > dir (y) > ['__doc__', '__init__', '__module__', '_a', '_b', 'who', 'who1'] > > > I need a function which lists only the members of > the "not derived" class (here class B). > > _b > _who1 > __init__ > > How can I achieve this? > With the introspect module or so?
I believe you can't: Both _a and _b end up in y.__dict__ and there's no way to differentiate between the two depending on the time of their creation. By the way, these are instance attributes, not class attributes, so strictly _b is not a member of B, it's just an instance of y. To see why this is the case, check the following valid (though highly discouraged) example: class X: def __init__(self, x): if isinstance(x,str): self._s = x else: self._n = x x1 = X("1") x2 = X(1) dir(x1) ['__doc__', '__init__', '__module__', '_s'] dir(x2) ['__doc__', '__init__', '__module__', '_n'] George -- http://mail.python.org/mailman/listinfo/python-list