What's a good way to provide additional decoration/metadata for Python function parameters?

后端 未结 4 1663
生来不讨喜
生来不讨喜 2021-02-15 17:17

We\'re considering using Python (IronPython, but I don\'t think that\'s relevant) to provide a sort of \'macro\' support for another application, which controls a piece of equip

4条回答
  •  萌比男神i
    2021-02-15 18:01

    I would use some kind of decorator:

    class TypeProtector(object):
        def __init__(self, fun, types):
            self.fun, self.types = fun, types
        def __call__(self, *args, **kwargs)
            # validate args with self.types
            pass
            # run function
            return fun(*args, **kwargs)
    
    def types(*args):
        def decorator(fun):
            # validate args count with fun parameters count
            pass
            # return covered function
            return TypeProtector(fun, args)
        return decorator
    
    @types(Time, Temperature)
    def myfunction(foo, bar):
        pass
    
    myfunction('21:21', '32C')
    print myfunction.types
    

提交回复
热议问题