這是一個關於乾淨,pythonic方式來處理一些不同的實例方法的問題。不同的方法。希望班級能夠對待他們都是一樣的
我有一個班,根據某些輸入操作有點不同。這些差異似乎不足以證明生產全新的課程是合理的。我必須將這個類與幾個數據「提供者」中的一個接口。我想我是聰明的,當我介紹一本字典:
self.interface_tools={'TYPE_A':{ ... various ..., 'data_supplier':self.current_data},
'TYPE_B':{ ... various ..., 'data_supplier':self.predicted_data} }
然後,作爲類初始化的一部分,我有一個輸入「SOURCE_NAME」而我呢......
# ... various ....
self.data_supplier = self.interface_tools[source_name]['data_supplier']
self.current_data
和self.predicted_data
需要相同的輸入參數,所以當需要調用該方法時,我不必區分它們。我可以叫
new_data = self.data_supplier(param1)
但現在我需要一個新的數據源接口 - 稱之爲「TYPE_C」 - 它需要更多的輸入參數。有辦法做到這一點,但我想不到的是很乾淨。舉例來說,我只需要添加新的參數老data_suppliers而從不使用它們,所以再調用會是什麼樣子
new_data = self.data_supplier(param1,param2,param3)
但我不喜歡這樣。我可以添加一個IF塊
if self.data_source != 'TYPE_C':
new_data = self.data_supplie(param1)
else:
new_data = self.data_c_supplier(param1,param2,param3)
,但如果避免這樣的街區正是我試圖在與該字典,我想出了第一個地方做。
所以結果是:我有一些「data_supplier」例程。現在我的項目已經擴大,他們有不同的輸入列表。但我希望我的班級能夠儘可能地對待他們。有任何想法嗎?謝謝。
阻止參數,無論是作爲一個列表或一個類,並使每個數據供應商只需要一個參數,這是參數的集合。 – katrielalex