美文网首页python
python实现注册器机制

python实现注册器机制

作者: 雨幻逐光 | 来源:发表于2020-08-24 17:26 被阅读0次

注册器机制的引入是为了使工程的扩展性变得更好。当产品增加某个功能需要增加一些新函数或者类时,它可以保证我们可以复用之前的逻辑。
我们来看一下它的使用方法:

register_obj = RegisterMachine("register")
# decorate method
@register_obj.register()
def say_hello_with(name):
    print("Hello, {person}!".format(person=name))
    
def say_hi_with(name):
    print("Hi, {person}!".format(person=name))
    
register_obj.get("say_hello_with")("Peter")
# function call method
register_obj.register(say_hi_with)
register_obj.get("say_hi_with")("John")

从上面的例子我们可以看出,我们通过register_obj这个对象,通过传入对应的函数名来得到该函数。接下来介绍下具体的实现:

class RegisterMachine(object):
    def __init__(self, name):
        # name of register
        self._name = name
        self._name_method_map = dict()
    
    def register(self, obj=None):
        # obj == None for function call register
        # otherwise for decorator way
        if obj != None:
            name = obj.__name__
            self._name_method_map[name] = obj
        
        else:
            def wrapper(func):
                name = func.__name__
                self._name_method_map[name] = func
                return func
            return wrapper

    def get(self, name):
        return self._name_method_map[name]

if __name__ == "__main__":
    register_obj = RegisterMachine("register")
    # decorate method
    @register_obj.register()
    def say_hello_with(name):
        print("Hello, {person}!".format(person=name))

    def say_hi_with(name):
        print("Hi, {person}!".format(person=name))

    register_obj.get("say_hello_with")("Peter")
    # function call method
    register_obj.register(say_hi_with)
    register_obj.get("say_hi_with")("John")

相关文章

  • python实现注册器机制

    注册器机制的引入是为了使工程的扩展性变得更好。当产品增加某个功能需要增加一些新函数或者类时,它可以保证我们可以复用...

  • 转《Python中的注册器模块》

    简介 在一个稍大一点的python项目中,我们很有可能会用到注册器(register)。这个注册器不是用户账号注册...

  • 一起学RPC(七)

    上一篇文章中说到要继续讨论关于“Registry”注册器的实现。然而我反悔了。注册器的实现涉及到了客户端程序,而客...

  • 文件很容易被破解?python带你了解加密解密机制

    本节使用python实现了一种简单的加密和解密机制。 描述:使用python实现一个简单的加密和解密机制,使用26...

  • LeetCode 146. LRU缓存机制(LRU Cache)

    146. LRU缓存机制 Python3 实现 LRU(最近最少使用) 缓存机制 更多可参见:https://en...

  • python多线程

    python基础之多线程锁机制 GIL(全局解释器锁) GIL并不是Python的特性,它是在实现Python解析...

  • 浅谈 Python 的模块导入

    浅谈 Python 的模块导入 本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句...

  • Python 爬取有道翻译API

    参考: 【Python】有道翻译的爬虫实现(后篇) 用Python破解有道翻译反爬虫机制 我昨天用的正规有道API...

  • 设计模式之:注册器模式

    注册器模式 注册器模式是一种常见的设计模式,主要就是将多个实例注册到一个统一的注册器中,然后通过方法直接去调用需要...

  • SpringBoot 应用篇之从 0 到 1 实现一个自定义 B

    191213-SpringBoot 应用篇之从 0 到 1 实现一个自定义 Bean 注册器 我们知道在 spri...

网友评论

    本文标题:python实现注册器机制

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