我有一個代表線性代數表達式(作爲表達式樹)的類層次結構,像這樣(它實際上比這更復雜,但這應該足以給你一個想法)。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__
,...),但我無法找到相應的函數在所有。