python-decorators

    2热度

    1回答

    我有两个装饰器。每个装饰器都有一个作为参数的函数。每个装饰器为该功能设置一个属性。在单个函数上链接装饰器之后,我希望看到2个新属性。但是,顶级装饰器t2会“覆盖”属性t1集合。否则,在解决所有问题后,t1不再存在。任何人都可以解释为什么以及如何解决它? def t1(function): def wrapper(*args, **kwargs): setattr(wrapper, "t

    4热度

    2回答

    我有一些python对象,其中有些方法需要在开始时进行一些检查,具体取决于此检查,方法的代码将运行或执行会被提出。我不是在每个方法的开头都复制“check”代码,而是在做一个装饰器,但我也希望装饰器被嵌入到类本身内部,因为它与它密切相关。所以基本上: ,而不是这个 class A(object): def a_method(self): if self.check_var

    0热度

    1回答

    我开始寻找龙卷风并开始阅读user guide。不过我发现关于协程的东西很迷惑。一方面文档讲述了装饰@gen.coroutine如何让事情变得更容易,但在另一方面,它会告诉你,那: 的Python 3.5引入了异步伺机关键字(使用这些关键字功能也被称为“原生协同程序”)。从Tornado 4.3开始,您可以使用它们来代替基于收益率的协同程序。只需使用async def foo()代替使用@ gen

    0热度

    1回答

    我很难理解参数化装饰器的概念以及它如何工作。可能有人请解释它是如何工作的,并会装饰底座看起来像在下面的例子: @base(10) def sum(x,y): return x+y print(sum(1,2))

    0热度

    3回答

    我需要一个装饰器,它需要一个参数,并且该方法应该被允许运行(基于一些简单的逻辑)或引发异常。但我不知道我该如何写这个装饰器。 class One(obj): trend = "trend" @myDecorator(self.trend) def click_button(self): clickable_element = self.driver.fin

    1热度

    1回答

    我的Python程序中有一个相当复杂的类层次结构。该程序有许多工具,它们是模拟器或编译器。这两种方法有一些共同的方法,所以有一个Shared类作为所有类的基类。的条向下的例子如下所示: class Shared: __TOOL__ = None def _Prepare(self): print("Preparing {0}".format(self.__TOOL_

    2热度

    1回答

    我一直在阅读一些Google App Engine SDK源代码,并且我注意到Google经常编写一个私有类方法(在_之前添加方法的名称),但是在完成方法代码块之后,他们立即创建一个具有相同名称的公共变量,并将私有方法分配给该变量。 他们为什么这样做? 示例代码: @classmethod @utils.positional(3) def _get_by_id(cls, id, parent=

    1热度

    1回答

    def register_processor2(processor_name='SomeProcessor'): def decorator(func): class SomeProcessor(GenericPaymentProcessor, TriggeredProcessorMixin): name = processor_name tran

    1热度

    1回答

    为什么我从运行上面的异常运行在这里调用。我觉得我失去了一些东西非常非常明显.. def decorator_factory(arg1, arg2): def simple_decorator(f): def wrapper(): print arg1 f() print arg2 return wrapper ret

    5热度

    2回答

    我想装饰所有方法在类中,我成功与此代码,但我也试图记录调用运营商像* + - /,有没有什么方法来装饰它们或类似getattr(self,"*")记录通话? class Logger(object): def __init__(self, bool): self.bool = bool def __call__(self, cls): class De