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()函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值