2011-12-07 92 views
0

我在数据库之外创建了两个对象。一个是SERVICES,另一个是MODULES获取包含相关对象的对象列表

我希望能够获得与某项服务相关的所有MODULES。例如,对于下面的示例,我想发出一个基本上说“使用键FACEBOOK获取与服务相关的模块对象列表”的命令,并让它返回最后两个模块对象。

class Module(object): 

    def __init__(self, key, service, name): 
     self.key = key 
     self.service = service 
     self.name = name 

ALL_MODULES = [ 
    Module(
     'TWT', 
     SERVICES['TWITTER'], 
     'Twitter Tweets', 
    ), 
    Module(
     'FBC', 
     SERVICES['FACEBOOK'], 
     'Facebook Comments', 
    ), 
    Module(
     'FBP', 
     SERVICES['FACEBOOK'], 
     'Facebook Posts', 
    ), 
] 

#dict of the above list 
MODULES = dict([(s.key, s) for s in ALL_MODULES]) 
+0

你的SERVICES类怎么样?如何检索您传递给它的服务名称? –

+0

@ FelixYan嗨菲利克斯。你什么意思?我想知道如何检索模块对象,如果我有在module.service中列出的服务密钥“FACEBOOK”。 – Brenden

+0

对不起,我误解了它。如果SERVICES是字典或其他东西,我认为你不能找回密钥,所以我建议你创建一个类似你的'Module'的类来解析服务,以便稍后可以检索密钥。 –

回答

3

我假定SERVICES返回Service -class具有name -attribute。如果这是真的,那么你可以得到所有与服务相关的模块(例如FACEBOOK),如下所示:

serviceModules = [m for m in ALL_MODULES if m.service.name == 'FACEBOOK'] 
+1

谢谢!这有效,除了=应该是名称和'FACEBOOK'之间的== == – Brenden

+0

正确,我修正了这个错字 – gecco