Bugs item #1475692, was opened at 2006-04-24 20:45 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1475692&group_id=5470
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Python Interpreter Core Group: Python 2.4 Status: Open Resolution: None Priority: 5 Submitted By: ganges master (gangesmaster) Assigned to: Nobody/Anonymous (nobody) Summary: replacing obj.__dict__ with a subclass of dict Initial Comment: >>> class mydict(dict): ... def __getitem__(self, key): ... return 17 ... >>> class blah(object): ... def __init__(self): ... self.__dict__ = mydict() ... >>> b = blah() >>> print b.x Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'blah' object has no attribute 'x' python doesn't call the overriden version of __getitem__. i've done several more tests, and the cause to this problem, afaik, is that the code assumes __dict__ is an instance of dict, so it directly uses PyDict_GetItem (or whatever it's called), thus skipping the overriden method. python should either disable setting __dict__ to anything that is not a real dict (type(x) == dict instead of isinstance(x, dict)), or be willing to call overriden methods. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1475692&group_id=5470 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com