高手请进

高手请进

class XendDomainDict(dict):
    def get_by_name(self, name):
        try:
            return filter(lambda d: d.getName() == name, self.values())[0]
        except IndexError, err:
            return None


这个类主要作用是干什么?????
这个类有点问题
lambda d: d.getName() 这个d是什么类型的?
filter是过滤的函数,第一个参数是过滤的函数,第二个是个列表
不知道从哪里找到的。我看就是对这个类(这个类就是一个字典)的所有值(value)进行遍历,执行每个值的gatName()方法,从这里可以看出每个值应该是一个个的对象,并且应该有getName()方法,然后如果与name比较相等则保留下来,不等则删除。然后从保留下来的结果中取第一个值返回。如果没找着则抛出一个异常。
楼上说明白点,这是xen的初始化阶段的程序,我也不太明白作什么用.

class XendDomainDict(dict):
    def get_by_name(self, name):
        try:
            return filter(lambda d: d.getName() == name, self.values())[0]
        except IndexError, err:
            return None

domains = XendDomainDict()


我直接打印domains,结果是{},搞不懂是作什么用的.

请高手指点,,先谢了.
XendDomainDict是一个字典,你直接创建 XendDomainDict()这样是一个空字典,当然什么都没有。而且你给你例子是它的一个方法,你没有调用这个方法,当然也是不起作用的。比如可以这样测试:

class XendDomainDict(dict):
    def get_by_name(self, name):
        try:
            return filter(lambda d: d.getName() == name, self.values())[0]
        except IndexError, err:
            return None
        
class TestO:
    def __init__(self, name, id):
        self.name = name
        self.id = id
        
    def getName(self):
        return self.name
   
    def __str__(self):
        return "%s,%s" % (self.name, self.id)
   
a = XendDomainDict()
a[1] = TestO('a', 1)
a[2] = TestO('b', 2)
a[3] = TestO('b', 3)
a[4] = TestO('d', 4)
a[5] = TestO('e', 5)

print a.get_by_name('a')
print a.get_by_name('b')
print a.get_by_name('m')