你會如何建議將一個容器(如字典)添加到python中的預先存在的對象?我只是瞎搞與matplotlib一個Line2D
對象,我發現我可以通過下面的方法添加一個詞典什麼是簡單而正確的方式來添加一個容器到python中的一個現存對象?
import matplotlib as mpl
line2D_obj = mpl.lines.Line2D([0,1], [0,0])
line2D_obj.labels = dict(text = '$\delta$', ndx = 30, leader_length = 15, leader_angle = 120)
的line2D_obj
沒有方法.labels
,當它被實例化。我剛剛創建了.labels
,因爲我想將一些數據存儲在Line2D
對象中。這是一個好方法嗎?如果不是,你還有什麼建議?
萬一它很重要,我正在研究這個問題的原因是我想創建一個自定義函數來標記matplotlib中的Line2D
對象。以前,我想我只是將我的標籤函數一堆嵌套列表,a.la.
labels = [[[axis1_curve_1_label], [axis1_curve2_label]], [[axis2_curve1_label]]]
但是這是混亂和難以遵循。我現在認爲有一個更好的方法。我的繪圖代碼將數據軸輸出爲名爲data_ax
的軸列表,因此Line2D
對象被很好地組織爲名爲lines
的列表。例如,如果我想上的數據軸2來標記曲線3,我可以簡單地鍵入
data_ax[2].lines[3].labels = dict(text = '$\delta$', ndx = 30, leader_length = 15, leader_angle = 120)
這是非常清楚我該曲線標記。然後,我可以將data_ax
對象傳遞給我的標記功能,並可以爲每條曲線選擇標籤信息。
在'__init__'中創建屬性'self.foo = {}'的正常方法實際上是在做與你在這裏完全相同的事情。區別在於人們希望看到'__init__'中創建的屬性,但不希望在類定義之外的某些隨機代碼中看到它們。 – abarnert