Jia*_* Du 5 python pickle getattr
class Test(object):
def __init__(self, a):
self.a = a
def __getattr__(self, name):
return getattr(self.a, name)
from pickle import loads, dumps
loads(dumps((Test(something),)))
Run Code Online (Sandbox Code Playgroud)
我有:
7 def __getattr__(self, name):
----> 8 return getattr(self.a, name)
RuntimeError: maximum recursion depth exceeded
Run Code Online (Sandbox Code Playgroud)
任何提示?
我可以通过更改以下代码来解决此问题:
if 'a' in self.__dict__:
return getattr(self.a, name)
Run Code Online (Sandbox Code Playgroud)
但我不想。有什么更好的解决办法吗?
谢谢
这应该可行,但我怀疑这是一个好主意......
class Test(object):
def __init__(self, a):
self.a = a
def __getattr__(self, name):
a = object.__getattribute__(self, 'a')
return a.__getattr__(a, name)
from pickle import loads, dumps
loads(dumps((Test({}))))
# <__main__.Test at 0x7f6beb8>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
541 次 |
| 最近记录: |