【发布时间】:2019-12-14 19:53:21
【问题描述】:
经过大量搜索,我发现解决我的特定问题的唯一方法是使用动态继承。遵循here 的指南和其他一些 SO 问题很容易;大多数表是this。
使用第一个链接中人为的示例的修改版本:
def makeinst(cls, *args, **kwargs):
class NewClass(cls): pass
return NewClass(*args, **kwargs)
mylist = makeinst(list,(1,2))
这如我所愿,但不能腌制:
pickle.dumps(mylist)
...
AttributeError: Can't pickle local object 'makeinst.<locals>.NewClass'
我明白为什么这不起作用,但我想知道有没有办法解决它?有没有更好的方法来动态子类化某些东西?
(FWIW,dill 也做不到。见dill issue #56)
【问题讨论】: