strange error when trying to log something
Peter Otten
__peter__ at web.de
Sun Jul 26 05:08:10 EDT 2009
Aahz wrote:
> In article <h49ah5$hv3$02$1 at news.t-online.com>,
> Peter Otten <__peter__ at web.de> wrote:
>>
>>I have a hunch that you are triggering a reload() somewhere. Example:
>>
>>Python 2.6.2 (release26-maint, Apr 19 2009, 01:58:18)
>>[GCC 4.3.3] on linux2
>>Type "help", "copyright", "credits" or "license" for more information.
>>>>> import weakref
>>>>> weakref.WeakValueDictionary()
>><WeakValueDictionary at 140598938447312>
>>>>> import UserDict
>>>>> reload(UserDict)
>><module 'UserDict' from '/usr/lib/python2.6/UserDict.pyc'>
>>>>> weakref.WeakValueDictionary()
>>Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> File "/usr/lib/python2.6/weakref.py", line 51, in __init__
>> UserDict.UserDict.__init__(self, *args, **kw)
>>TypeError: unbound method __init__() must be called with UserDict instance
>>as first argument (got WeakValueDictionary instance instead)
>
> Nice sleuthing! How did you figure that out?
Roughly:
- The poster's description/remedy makes no sense (to me); have a look at the
traceback.
- Nothing suspicious except the actual error message. Isn't
WeakValueDictionary a UserDict? Verify.
- There must be two different UserDict classes. This can happen to an
unsuspecting user by importing the main script or by doing a reload().
UserDict is unlikely to be the main script, and web frameworks (django was
mentioned) often use a reload mechanism to avoid frequent server restarts.
- Reproduce the error.
Peter
More information about the Python-list
mailing list