我有一个代表线性代数表达式(作为表达式树)的类层次结构,像这样(它实际上比这更复杂,但这应该足以给你一个想法)。Python:类层次结构中的自定义deepcopy
- 表达
- 操作
- 时报
- 加
- 符号
- 矩阵
- 标
- 操作
我操纵在许多不同的方式表达者,所以我必须要复制这些表达了很多,因为我想探索操纵他们不同的方式(我真不”不要以任何方式复制它们)。毫不奇怪,copy.deepcopy()
很慢。
不是所有的类属性都需要进行深层次的处理,而这些表达式树总是树(如果不是,根本上是错误的),所以我可以通过简化记忆来节省一些时间(或者不要在所有)。
我想通过实现自定义复制功能来更快地复制。这可能意味着实施__deepcopy__()
,写一个全新的功能或使用类似get_state
和set_state
,我真的不在乎。目前,我不关心酸洗。
我使用Python 3
因为我在那里新的属性在不同层面介绍了类层次结构,我不希望从每个级别从头开始。相反,重用超类的某些功能类似于__init__
中的方法,通常称为超类的__init__
将是可取的。不过,我宁愿不致电__init__
,因为有时会做一些复制时不需要的额外内容。
我该如何以最快和最pythonic的方式做到这一点?在这种情况下,我无法找到关于如何实现此复制功能的任何合理指导。我研究了Python 2和3中的deepcopy的实现。在Python 2中,Python 3中使用了一堆不同的方法(get_state
/set_state
,使用__dict__
,...),但我无法找到相应的函数在所有。