Tag: 装饰器

如何在python抽象类中创build抽象属性

在下面的代码中,我创build了一个基本的抽象类Base 。 我想要从Baseinheritance的所有类提供name属性,所以我使这个属性成为@abstractmethod 。 然后我创build了一个名为Base_1的Base类的子类,它提供了一些function,但仍然是抽象的。 在Base_1没有name属性,但是python会在Base_1创build一个没有错误的对象。 如何创build抽象属性? from abc import ABCMeta, abstractmethod class Base(object): __metaclass__ = ABCMeta def __init__(self, strDirConfig): self.strDirConfig = strDirConfig @abstractmethod def _doStuff(self, signals): pass @property @abstractmethod def name(self): #this property will be supplied by the inheriting classes #individually pass class Base_1(Base): __metaclass__ = ABCMeta # this class does not provide the […]

如何在django中编写自定义装饰器?

问题 – @is_premium_user def sample_view: ……. …… 我希望某些视图只能访问网站的高级用户。 我怎样才能在我的项目中的各种应用程序中使用这个装饰器?

用可选参数制作装饰器

from functools import wraps def foo_register(method_name=None): """Does stuff.""" def decorator(method): if method_name is None: method.gw_method = method.__name__ else: method.gw_method = method_name @wraps(method) def wrapper(*args, **kwargs): method(*args, **kwargs) return wrapper return decorator 例如:下面的代码使用foo_register来装饰my_function ,而不是使它成为decorator 。 @foo_register def my_function(): print('hi…') 示例:以下按预期工作。 @foo_register('say_hi') def my_function(): print('hi…') 如果我希望它在两个应用程序(一个使用method.__name__名称method.__name__和一个传入名称)中正确工作,我必须检查foo_register内部以查看第一个参数是否是装饰器,如果是,则必须: return decorator(method_name) (而不是return decorator )。 这种“检查是否可以调用”似乎非常黑客。 有没有更好的方法来创build一个这样的多用途装饰器? PS我已经知道,我可以要求装饰被称为,但这不是一个“解决scheme”。 我希望API感觉自然。 我的妻子喜欢装饰,我不想毁了。

确定Python日志logging器是否设置为DEBUG级别?

如果我使用命令行参数将日志模块设置为DEBUG,如下所示: if (opt["log"] == "debug"): logging.basicConfig(level=logging.DEBUG) 我怎么能稍后告诉logging器是否设置为DEBUG? 我正在写一个装饰器,如果True标志被传递给它,并且如果没有给定标志,它将默认打印时间信息,当根logging器被设置为DEBUG时,将会定时一个函数。

如何获得给定的装饰器的Python类的所有方法

如何获得用@ decorator2装饰的给定类A的所有方法? class A(): def method_a(self): pass @decorator1 def method_b(self, b): pass @decorator2 def method_c(self, t=5): pass

门面,代理,适配器和装饰devise模式之间的区别?

Facade,Proxy,Adapter和Decoratordevise模式有什么区别? 我从来没有读过一个清楚的解释,你的是什么?

我怎样才能装饰一个类的所有function,而无需反复input每个方法添加? Python

比方说我的类有很多方法,我想在我们的每一个应用我的装饰器,后来当我添加新的方法,我想要应用相同的装饰器,但我不想在方法声明上面写@mydecorator所有时间? 如果我看看__call__是否正确的路? 谢谢 重要提示:下面的例子似乎解决了一个不同的问题,而不是被问到的原始问题。 编辑:编号喜欢显示这种方式,这是一个类似的解决scheme,我的问题任何人稍后发现这个问题,使用评论中提到的mixin。 class WrapinMixin(object): def __call__(self, hey, you, *args): print 'entering', hey, you, repr(args) try: ret = getattr(self, hey)(you, *args) return ret except: ret = str(e) raise finally: print 'leaving', hey, repr(ret) 然后你可以在另一个 class Wrapmymethodsaround(WrapinMixin): def __call__: return super(Wrapmymethodsaround, self).__call__(hey, you, *args)

什么是Redux @connect装饰器中的@(符号)?

我正在使用React学习Redux,并偶然发现了这个代码。 我不确定它是否是特定的Redux ,但是我在其中一个例子中看到了下面的代码片段。 @connect((state) => { return { key: state.ab }; }) 虽然connect的function是相当简单的,但我不明白connect之前@ 。 如果我没有错,它甚至不是一个JavaScript运算符。 有人可以解释这是什么,为什么使用? 更新: 它实际上是react-redux的一部分,用于将React组件连接到Redux存储。

什么是“装饰者”,他们是如何使用的?

我很好奇AngularJS中的装饰器究竟是什么。 除了AngularJS文档中的简介以及YouTubevideo中简短的(尽pipe有趣的)提及之外,没有太多关于装饰器的信息。 正如Angular的人所说,它是一个装饰者: 服务的装饰,允许装饰者拦截服务实例的创build。 返回的实例可以是原始实例,也可以是委托给原始实例的新实例。 我真的不知道这是什么意思 ,我不知道你为什么要把这个逻辑与服务本身分开。 例如,如果我想在不同的条件下返回不同的东西,我只是将不同的parameter passing给相关的函数,或者使用另一个共享该私有状态的函数。 我还是一个AngularJS noob,所以我敢肯定,这只是我已经拿起的无知和/或坏习惯。

将一个装饰器附加到一个类中的所有函数中

我真的不需要这样做,但只是想知道,有没有办法将一个装饰器绑定到一个类中的所有函数,而不是明确地为每个函数声明它。 我想它会成为一种方面,而不是一个装饰者,它确实感觉有点奇怪,但是正在考虑像时间或authentication这样的东西,它会很整齐。