我有這樣一類:這是一個適合裝飾者使用嗎?
class MyClass(object):
def __init__(self, name):
self.name = name
self.df = pd.read_table(name)
和這樣一堆方法:
def valid_cond1(self):
# check if cond1 is satisfied with respect to self.df and return
# a DataFrame of rows not satisfying cond1
def valid_cond2(self):
# same deal
等。在結束時,我想利用每種方法的輸出,和向客戶端返回一個格式化的壞行列表。我可以通過調整實現,像這樣爲valid_cond1
做到這一點:
def valid_cond1(self):
# err_df = rows of self.df not meeting cond1
bad_lines = []
for ix, val in err_df.iterrows():
bad_lines.append("Error in line %s: %s. Cond1 not met.." % (ix,val))
return bad_lines
但我不想要寫每項功能相同的邏輯(或許還有很多人)。
這是我可以使用裝飾者的地方嗎?還是有另一種方法來達到預期的行爲?
因此,每種方法之外的'err_df'如何可訪問?裝飾器可以訪問全局變量,'self',參數和返回值,沒有問題。所以,如果你*返回* err_df,那麼肯定沒問題,裝飾者可以爲你做。否則,只需使用一個函數。 –
編寫一個方法,將另一個方法作爲輸入,調用它,並根據需要設置結果的格式。 – kindall
有沒有可能因爲其他原因而希望從這些函數輸出?您可以爲此編寫一個單獨的格式化函數並將結果傳遞給它。從演示中分離出程序邏輯。 – tdelaney