overloading __getattr__ and inheriting from dict
Benoît Dejean
bnetNOSPAM at ifrance.com
Fri Mar 12 13:55:48 EST 2004
class TargetWrapper(dict):
def __init__(self, **kwargs):
dict.__init__(self, kwargs)
__getattr__ = dict.__getitem__
__setattr__ = dict.__setitem__
__delattr__ = dict.__delitem__
then
tw = TargetWrapper()
tw.a = "spam" # ok
del tw.a # ok
tw.b = "egg"
print tw.b
last line give me an
AttributeError: 'TargetWrapper' object has no attribute 'b'
if i define
def __getitem__(self, name):
return dict.__getitem__(self, name)
__getattr__ = __getitem__
then the accessing the b attribute is ok. what's wrong ?
More information about the Python-list
mailing list