Message409840
> I want to known why it is
It's because Exception implements __reduce__ and that takes precedence over __getnewargs_ex__. You can see that with this example:
""""
import pickle
class MyException():
def __init__(self, desc, item):
super().__init__()
self.desc = desc
self.item = item
def __getnewargs_ex__(self):
print('called in {}.__getnewargs_ex__'.format(self.__class__.__name__))
return (self.desc,), self.__dict__
def __reduce__(self):
print('called in {}.__reduce__'.format(self.__class__.__name__))
return MyException, (self.desc, self.item),
e = MyException('testing', item='cpu')
s = pickle.dumps(e, protocol=-1)
x = pickle.loads(s)
""""
Output: called in MyException.__reduce__ |
|
Date |
User |
Action |
Args |
2022-01-06 12:59:34 | iritkatriel | set | recipients:
+ iritkatriel, pitrou, alexandre.vassalotti, liyang1025@gmail.com, liugang93 |
2022-01-06 12:59:34 | iritkatriel | set | messageid: <1641473974.62.0.750099657062.issue37489@roundup.psfhosted.org> |
2022-01-06 12:59:34 | iritkatriel | link | issue37489 messages |
2022-01-06 12:59:34 | iritkatriel | create | |
|