I have a class A, and another class B which is a wrapper for it (a Product, inherited from SimpleItem.SimpleItem). I want B to delegate most attributes to A:
class A: def __init__(self, title, ...): self.title = title ....
class B(SimpleItem.SimpleItem): def __init__(self, id, title): self.id = id self.innerA = A(title)
def __getattr__(self, name): return getattr(self.__dict__['innerA'], name)
This works fine for most attributes *but* title. SimpleItem.Item has a class attribute 'title' and, altough B instances have no 'title' attribute at all, they inherit an empty class attribute 'title' from Item, and never goes thru __getattr__. How could I arrange things so 'title' comes from inner A instance, and *not* from Item base class?
A curious arrangement. Take a look at this little experiment on a Python console::
class A: ... title = 'dog' ... class I: ... title = 'cat' ... class B(I): ... innerA = A() ... title = A.title ... B.title 'dog'
Looks like that works as you want. --jcc -- "My point and period will be throughly wrought, Or well or ill, as this day's battle's fought."