python 反射

来源:互联网 发布:单片机小车制作流程 编辑:程序博客网 时间:2024/05/17 06:07

这几天用到了反射所以记一下免得以后忘了。
假设有一个类

class Action(object):    def __init__(self):        self.body = None        self.food = None    def eat(self):        print "{} eat {}".format(self.body,self.food)    def drink(self):        print "{} drink {}".format(self.body,self.food)
假设现在有一群人要吃饭了,然后用一个字典定义动作,如下,action = [{"people":"xiaohong","action":"eat","food":"apple"},{"people":"xiaohei","action":"drink","food":"milk"}]object = Action()for i in action:    setattr(object,"body",i["people"])    setattr(object,"food",i["food"])    getattr(object,i["action"])()这样就可根据传进来的函数名称来执行对应的方法, 这样做的好处是方法名称是动态的。输出结果xiaohong eat applexiaohei drink milk

zip函数

people = ["xiaohong","xiaohei","xiaolv","xiaohua"]age = [12,15,17,20]使用zip(people,age)[('xiaohong', 12), ('xiaohei', 15), ('xiaolv', 17), ('xiaohua', 20)]借助dict(zip(people,age)),可以快速的生成字典{'xiaohei': 15, 'xiaohong': 12, 'xiaolv': 17, 'xiaohua': 20}

map函数

def add(a,b)    return a*bmap(add,range(10),range(10))map函数的用法是,第一个参数输入一个函数,后面参数传入可迭代的参数,然后将传入的函数挨个作用到迭代的参数上,并且返回一个新的列表

filter函数

def add(a)    return a % 2 == 1filter(add,range(20))filter函数的用法是,第一个参数传入过滤方法,挨个应用到传入的可迭代参数上,并且返回一个新的列表
原创粉丝点击