我知道,標題很難理解。將另一個類的函數傳遞給這個類
所以,我有這個類:
class ConfigDict(dict):
def __init__(self, dic):
super(ConfigDict, self).__init__(dic)
def required(self, keys_array, function):
print 'required'
def valid(self, function = None):
print 'valid'
,我想什麼 - 我用字典創建該類的實例作爲參數:
ConfigDict({'a' : 'b'})
它的工作,那是很好的。但我想從ConfigDict類的字典中傳遞函數作爲參數,而無需從ConfigDict中導入方法。
例如,我想這樣做:
ConfigDict({'a' : ('b', required(['test'], valid))})
我知道required
在ConfigDict現在什麼也不做。預期的結果是:
>> ConfigDict({'a' : ('b', required(['test'], valid()))})
required called with ['test'], valid for {a : b}
valid called from required with None for {a : b}
所以,用{'a' : ('b', required['test'], valid())}
字典創建ConfigDict的實例後,我想,這種情況下在__init__
方法使循環中的所有字典的元素,如果創建於一值的元組,執行在itselfs成立嵌套函數。
在這裏有沒有辦法做到這一點,而無需從ConfigDict導入所有方法?
編輯:
如我所料,我必須更好地解釋我需要什麼。
好吧,我們以這個片段:
ConfigDict({'a' : ('b', required(['test'], valid))})
這使我們ConfigDict的新實例。這些touple功能用於驗證值,在這種情況下它是'b'
。我做了一些改動等待響應,因此調用這個類是現在看的是:
cd = ConfigDict()
cd.feed({'a' : 'b'})
我可以調用這樣的功能:
cd.feed({'a' : ('b', cg.required(['test']))})
什麼是工作的非常好,但有一兩件事 - 它不傳遞給required
函數的值。 ConfigDicts.required
應該得到一個數組和值,在這種情況下爲'b'
。我不希望自己找到辦法來做到這一點,除了使用無處不在的lambda的我想避免的。
所以,我的問題有點改變 - 有沒有什麼辦法可以從得到'b'
值required
函數?我可以直接將'b'
作爲參數傳入required
,但我希望有多個函數調用元組,每個值都會在代碼中造成一些混亂。
而且,任何人請,我的文章的編輯,我缺乏的話來形容這個問題:)
只有一點點?不錯的進展,一個月前我甚至無法理解我自己;)這幾乎正是我要找的,謝謝。 – Galmi 2011-05-17 00:08:24
我測試了你的代碼,我發現這很好,但是沒有做到我所期望的,除了在ConfigDict中調用函數。在幾分鐘內我編輯我的帖子,嘗試解釋我需要的更簡單。 – Galmi 2011-05-17 00:42:22
現在工作:)再次謝謝你。 – Galmi 2011-05-17 02:57:30