美文网首页
hotfix to inchat

hotfix to inchat

作者: HausenZhang | 来源:发表于2017-04-05 23:37 被阅读0次

  前两天发现python一个很有趣的库,itchat,它提供了很多微信的接口,可以利用它来做很多微信相关的事情,比如收发消息,聊天备份等。

  但是写的时候发现一个很尴尬的问题,就是每次改完代码重新运行后都得重新扫描微信二维码重新登录,重新初始化数据,确实挺麻烦的。然后就想到了暑假的时候在网易游戏做的热补丁功能,这样就可以让程序在运行的过程中改动或者添加我新的代码了。

  当时做的hotfix比较麻烦,需要支持类、函数、方法、变量的各种补丁,其实python作为面向对象的动态语言,修改函数只要fun_old=fun_new就可以了,因为python中万物皆对象。但是当时做的时候出现了作用域的问题,所以不能这么简单地赋值,就通过修改fun.func_code等属性进行赋值修改,我记得是要重新赋值3个变量。但是具体忘记了,翻出来当时的笔记本上也只记了func_code这一个属性。所以还是得做记录啊。。这也是我写这篇文字的理由之一。

  不过只修改函数并不复杂,直接赋值就好了,但是itchat中的相应函数是需要用itchat.msg_register修饰符注册的,这样就不好直接对函数进行赋值了,当然也可以Import hotfix_code之后对整个函数进行重新注册,但感觉这样做不美观,而且需要自己控制循环刷新了。其实只要在每次有操作的时候进行一次热更新就可以了。

因此决定这样写

import hotfix_code

hotfix_version = hotfix_code.hotfix_version

def inner_func(msg):

itchat.send(u'热更新函数未导入', FILEHELPER)

@itchat.msg_register

def simple_reply(msg):

#第一步判断是否是发给文件助手的指令,是的话调用指令相应的操作函数

#第二步判断是否是自己发出的消息,自己发出的消息也是不需要处理的

#定义热更新函数

  global hotfix_version

  reload(hotfix_code)

  if hotfix_code.hotfix_version!=hotfix_version:

     hotfix_version.func_code=hotfix_code.hotfix_version.func_code

       zhs_log('\n\n\n\n\n=================== new hotfix version '+str(hotfix_version)+' start===============')

        inner_func=hotfix_code.inner_func

return inner_func(msg)

相关文章

  • hotfix to inchat

    前两天发现python一个很有趣的库,itchat,它提供了很多微信的接口,可以利用它来做很多微信相关的事情,比...

  • XLua热更学习笔记(一)

    1.hotfix.md说明,常见FAQ解答 hotfix.md的原话:这个特性默认是关闭的,需要添加HOTFIX_...

  • Hotfix

    使用方式 1、打开该特性 添加HOTFIX_ENABLE宏,(在Unity3D的File->Build Setti...

  • 百分百对标微信的inChat

    最近币圈就出现一个号称百分百对标微信的聊天工具inChat。 inChat到底是什么?和微信有哪些不一样? 区块链...

  • android热更新

    HotFix 简介:阿里的热补,https://github.com/dodola/HotFix阿里巴巴无线事业部...

  • 如何解决意料之外的问题

    这周处理了一个HOTFIX,一面忙的焦头烂额,另一面也在反思,HOTFIX可能完全避免吗? 什么是HOTFIX?字...

  • 2022-03-15 gitflow

    hotfix: 从master 拉分支,修改完后 合并到 dev 和 master,接着删除hotfix分支。 r...

  • Android Hotfix

    Hotfix:让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力。 热补丁技术在2015年开始爆...

  • 阿里HotFix成功经验流程分享(最全最专业)

    登陆官网申请权限,开通HotFix支持。 一、进入HotFix后台,配置好后台数据。 二、找到iOS的SDK,下载...

  • iOS hotfix lua语法

    hotfix lua语法 替换WSFRefundBaseCell WSFRefundCellContentView...

网友评论

      本文标题:hotfix to inchat

      本文链接:https://www.haomeiwen.com/subject/sdcfattx.html