python通过反射执行代码

场景:python2.7没有@注解 用于实现适配器模式,不能再方法执行前后维护一些全局变量。所以用反射的思路来统一调用一个方法来执行其他的函数。

比如以下例子是为了维护一个长期使用的mysql连接,以此减少mysql的访问压力。在每次执行其他方法的时候调用

self.conn = conn_app_db.check_conn(self.conn),以此来维护连接,或者产生新连接(通过conn.ping方法判断是否连接断开)。

class upload_article(object):

    def __init__(self):
        self.conn = conn_app_db.check_conn(None)

    def query_one_artice(self,a):
        try:
            print self.conn
            sql = "select md5_url,title,author,content from article_url_log limit 1"
            cursor = self.conn.cursor()
            cursor.execute(sql)
            result = cursor.fetchall()
            if result is None:
                return None
            else:

                return result
            cursor.close()
        except Exception,e:
            print e


    def excute_function(self,fn_name,param):
        #这个用于检查连接是否可用
        self.conn = conn_app_db.check_conn(self.conn)
        print "conn is healthy"
        print "start to excute function "+fn_name
        result = getattr(self, fn_name, None)(param)
        return result

总结:getattr可以通过名字返回对象的属性和函数,最后通过代入参数执行函数。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值