问题标签 [python-decorators]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
259 浏览

python-2.7 - 如何修改类的方法行为?Python,类属于无法更改的库

有一些用 Python (2.x) 编写的库。它的代码不能更改。lib里面有A类。我需要修改A::method()的行为。还有很多其他类:B 类、C 类等等(它们也都属于 lib)。他们都以某种方式使用 A 类 - 无论如何。这意味着我不能继承类 A 并覆盖方法 A::method()。

据我所知 - 应该使用 Python-Decorators-technic。但具体如何?你能展示一些这样的解决方案的样本吗???

0 投票
2 回答
574 浏览

python - python中的重载设置器装饰器

在我的课堂上,我有一个数组作为属性。使用 setter 装饰器我想以不同的方式为同一属性分配一个值:

因此,如果分配了一个数字,则所有元素都会更改,如果分配了两个数字,我会更改第一个和最后一个。这是正确的方法吗?

0 投票
1 回答
66 浏览

python - Python装饰器错误?

我尝试使用以下代码创建装饰器。

但它给出了错误

请解决我的问题。谢谢..

0 投票
2 回答
1026 浏览

python - 将两个 python 装饰器合二为一

这是我想组合的两个装饰器,因为它们非常相似,不同之处在于如何处理未经过身份验证的用户。我更喜欢有一个可以用参数调用的装饰器。

目前我正在将这些装饰器用于特定路线,例如

我更喜欢这个:

我在 python 3.3 上使用 Bottle 框架。有可能做我想做的事吗?如何?

0 投票
1 回答
364 浏览

python - 如何在装饰器中设置实例变量?

我有一个计算工资组成部分的类,如下所示。

在计算每个津贴之前,我需要检查所有津贴的总和是否不超过grossPay,即我的总工资。我写了一个装饰器,它包装了每个津贴计算方法并完成了上述要求。例如,

但不幸的是,它没有用。第一津贴计算正确,但所有其他津贴的值与第一津贴相同。即 houseRentAllowance 将有 100 而不是上面给出的 0.0。

我发现的问题是,代码行

在我试图设置类变量的装饰器中不起作用。

有什么办法可以解决这个问题吗?

0 投票
2 回答
251 浏览

python - 记忆一个使用实例属性的函数

我是 python 新手,在网上找不到答案。假设我有一个方法可以进行一些计算并返回一个字符串

我在几个地方使用这个函数并想记住它,但由于它不带参数并且取决于可以在调用之间更改的实例属性,我不知道如何继续,

我意识到我可以编写自己的记忆功能来检查这些属性是否发生了变化,但这似乎不正确,因为这仅适用于该功能,我希望将来可能对其他功能做同样的事情

0 投票
2 回答
3722 浏览

python - 多个python装饰器

我有一个带有装饰方法(my_method)的 Django 模型(MyModel)。我希望装饰器对 my_method 执行一些检查:

  • 如果检查成功, my_method 应该返回一个字符串;

  • 如果检查不成功, my_method 应该返回装饰器返回的失败消息。

逻辑如下:

因此,如果 decorator1 返回失败,我希望 an_instance_of_my_model_instance.my_method(request) 返回 ('failure', 'message')。如果 decorator1 成功但不是 decorator2,我会期望('另一个失败','消息')。并且如果所有的测试都通过了,u'如果装饰器执行的所有检查都成功必须返回的结果'

如果 decorator1 的检查成功通过,我不知道如何检查 decorator2。我试图通过检查 decorator2 中 method_to_decorate 的 type() 来做到这一点,但似乎 type 使用的是原始方法本身,而不是 decorator1 返回的结果(好像装饰器不知道以前的装饰器执行的操作) .

先感谢您!

0 投票
3 回答
113 浏览

python - 在 python 中发现装饰类实例方法

我有一个 python 类,例如:

方法pretty_status@serializable 修饰

发现类中具有某种装饰的方法的最简单和最有效的方法是什么?(在上面的例子中给出:pretty_status)。

编辑: 还请注意,有问题的装饰器是自定义/可修改的。

0 投票
2 回答
42 浏览

python - 允许子类在 python 中指定他们想要装饰的方法

我正在干燥一些具有类代码副本并粘贴的代码。我已将代码制成子类,以实现所需的不同元素,但代码的残余之一是为一个通用命名的方法调用了特定于每个类的不同装饰器。

在这个例子中,它是foo方法。@some_decorator_function用于从每个类的另一个命名空间导入。现在装饰器只从父类调用一次,它不知道要使用什么装饰器,因为子类需要选择它。

有没有办法将装饰的功能委托给子类?

我的想法(并NotImplementedError因为 X 被评估而立即提出):

0 投票
14 回答
639447 浏览

python - @property 装饰器在 Python 中是如何工作的?

我想了解内置函数是如何property工作的。令我困惑的是,property它也可以用作装饰器,但它只在用作内置函数时才需要参数,而不是在用作装饰器时。

此示例来自文档

property的参数是getx,setxdelx一个文档字符串。

在下面的代码中property用作装饰器。它的对象是x函数,但在上面的代码中,参数中没有对象函数的位置。

在这种情况下如何创建x.setterx.deleter装饰器?