在搁置模块(以及搁置帮助程序copy_reg模块)中看到一个奇怪的异常。看一下,它正在尝试调用对Pickler类的__getstate__方法的引用。但是,由于某种原因,这似乎返回了None。只是想知道是否还有其他人经历过这种情况,是否可以做一些事情以使货架正确工作?这是我看到的异常的返回堆栈: File "/usr/local/lib/python2.7/dist-packages/libgsync/drive/__init__.py", line 497, in stat self._pcache[search] = ent File "/usr/lib/python2.7/shelve.py", line 132, in __setitem__ p.dump(value) File "/usr/lib/python2.7/copy_reg.py", line 84, in _reduce_ex dict = getstate()DEBUG: libgsync/drive/__init__.py:387:walk(): Exception: 'NoneType' object is not callable我随意查看代码,这是_reduce_ex()函数中发生故障的地方:try: getstate = self.__getstate__except AttributeError: if getattr(self, "__slots__", None): raise TypeError("a class that defines __slots__ without " "defining __getstate__ cannot be pickled") try: dict = self.__dict__ except AttributeError: dict = Noneelse: dict = getstate()最初,它将self .__ getstate__分配给getstat,因此这时应该可以调用。它似乎没有引发异常,因为它是在else块的上下文中执行的。奇怪的...这是发生异常的代码行的调试输出:DEBUG: libgsync/drive/__init__.py:496:stat(): Updating path cache: /unittest这是导致异常的代码:# Update path cache.if self._pcache.get(search) is None: debug("Updating path cache: %s" % search) self._pcache[search] = ent
添加回答
举报
0/150
提交
取消