python代码分析05

class Furnishing:#创建一个类(继承于基类object)
    def __init__(self, room):#初始化room
        self.room = room

class Sofa(Furnishing):#继承于Furnishing
    pass
class Bed(Furnishing):#
    pass
def map_the_home(home):#定义一个函数,传入home参数进去
    res = {}#创建一个空字典
    for obj in home:#遍历home
        room = obj.room#赋值room
        if room in res:#如果res字典中有room,为真
            res[room].append(obj)#把obj添加到相对应k中
        else:#为假
            res[room] = [obj]#相当于在字典中添加值,和为真是一样的效果,都是找到对应的k,并把Value添加进去
    return res#返回res

def counter(home):#定义counter函数,把参数home传入进去
    res_dict = {'Bed'      : ['Beds'       , 0],
                'Bookshelf': ['Bookshelves', 0],
                'Sofa'     : ['Sofas'      , 0],
                'Table'    : ['Tables'     , 0]}#定义一个字典
    for obj in home:#遍历home
        print(obj.__class__.__name__)#通过在home列表中的obj类的属性找到slf.room的值,其中__class__.__name__是返回类名
        res_dict[obj.__class__.__name__][1] += 1#找到字典中Value列表中具体的元素,也就是后面的数字+1
    for value in res_dict.values():#
        print("%s: %d" % (value[0], value[1]))#打印出Value中的所有元素,因为类型不一样。所以分开写
if __name__ == "__main__":#入口
    home =[]#定义一个空列表
    home.append(Bed('Bedroom'))#列表中添加Bed实例
    home.append(Sofa('Living Room'))#列表中添加Sofa实例
    print(map_the_home(home))#之所以要用print,是因为并没有执行,只是简单加载函数(如果这里不用print也可以,但是要在map_the_home这个函数中把return res 改成print(res))
    counter(home)#调用counter()函数

猜你喜欢

转载自blog.csdn.net/qq_37181884/article/details/81255664