ここで、__getattr__を__getattribute__に置き換えます。

class wrapper(object):
def __init__(self, obj):
self.__wrapped = obj # obj を組み込む。
def __getattribute__(self, attrname):
return getattr(self.__wrapped, attrname)

l = wrapper([])

(試しに、実行してみます)
>>> l.append(333)
(ここで暴走)

なぜ暴走するのかよく分りません。
__getattribute__はどう使うのが正しいのでしょうか?