我知道,标题很难理解。将另一个类的函数传递给这个类
所以,我有这个类:
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