473,406 Members | 2,745 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,406 software developers and data experts.

overloading __getattr__ and inheriting from dict

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 ?
Jul 18 '05 #1
1 2022
Benoît Dejean <bn********@ifrance.com> writes:
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 ?


I'm not sure, but changing

__getattr__ = dict.__getitem__

to

__getattribute__ = dict.__getitem__

makes things behave more like I think you expect.

Cheers,
mwh

--
Of course, it obviously is beta hardware so such things are to be
expected, but that doesn't mean that you can't point your fingers
and generate a nelson style HAHA at a multi billion dollar
corporation's expense. -- CmdrTaco on slashdot.org
Jul 18 '05 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Fuzzyman | last post by:
I've been programming in python for a few months now - and returning to programming after a gap of about ten years I've really enjoyed learning python. I've just made my first forays into...
0
by: Christian Hudon | last post by:
Hi, I'd like to be able to trap lookups of attributes of the current module. Exactly like what __getattr__ does, but for modules. As an exmaple, I'd like to be able to do: File foo.py ...
13
by: denis wendum | last post by:
In a nutshell: What is the equivalent of __radd__ (wich overloads the right hand side of +) when overloading the comparison operators <,>,== and so on. My first guess __rlt__ for overloading the...
2
by: Peter Bengtsson | last post by:
Hi, I'm trying to pickle an object instance of a class that is like a dict but with a __getattr__ and I'm getting pickling errors. This works but is not good enough. $ python2.4 .... pass...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.