![]() |
1
0
寄存器装饰器首先,当使用decorator作为函数的寄存器时,一个好的选择是为decorator编写一个类,以便它可以用于注册和访问已注册的函数。
注册类中的方法
以上方法对注册方法有效。不过,它只会注册
未绑定的
方法。这意味着你必须通过
注册绑定方法无法在类实例化时注册绑定方法,因为还不存在实例。您必须创建一个实例并注册其绑定方法。
|
![]() |
2
0
你需要2次初始化。
在类初始化时,decorators应该用于
贴上
指定方法的名称。或者在类完全定义之后,它可以接收一个新的
一个成员初始化,每个成员都应该收到一个
我将使用基类和修饰符:
如果子类没有定义
完成后,您可以定义礼貌类:
我把你的 模块 对象,因为模块在python意义上是不同的(它是脚本文件本身) |
![]() |
3
0
这里的问题是你需要访问
你可以存储变量
方法修饰符
(此后,我在这里使用了一个列表,当您两次调用decorator(如“谢谢”、“gracias”示例)时,如果映射名只是一个字符串,它将被覆盖。) 类装饰器
然后你必须用
(另请注意,我们不再想写
替代方法 或者,你可以使用一个元类来做这种事情,但是我认为更重要的问题是你为什么要这样做。尽管这样做可能是有原因的,但无论最初的问题是什么,可能都有更好的解决方法。 重要的注意事项
您将无法使用您在原始post中使用的方法调用函数,例如。
这意味着映射现在是一个实例变量,而不是一个类变量。您现在还可以使用
|
![]() |
mueslo Thomas Kühn · 修饰类方法以构建方法注册表 7 年前 |
![]() |
Mr.Dreamer · 类方法的python装饰器 7 年前 |
![]() |
Igor Pozdeev · 属性getter和上下文管理器 7 年前 |
![]() |
Miles P · Typescript类型检查不适用于我的装饰程序 7 年前 |
|
Ryohei · 如何在我的软件包中使用decorator 7 年前 |
|
user7696297 · python中的函数修饰符是什么 7 年前 |
![]() |
lilezek · 限制方法修饰符的使用 7 年前 |