|
|
1
7
当调用decorator时,使用函数作为参数调用它, 不 一个方法——因此,如果装饰器尽可能多地检查和内省它的方法,它将毫无用处,因为它只是一个函数,不包含关于封闭类的任何信息。我希望这能解决你的“谜语”,尽管是负面的! 可能会尝试其他方法,例如对嵌套堆栈帧进行深入的自省,但这些方法非常简单、脆弱,而且肯定不会延续到pynie等python 3的其他实现中;因此,我强烈建议避免使用这些方法,以支持您已经在考虑的类装饰器解决方案,并且更清晰、更具Soli性。d. |
|
|
2
0
这是一篇很老的文章,但是反省不是解决这个问题的方法,因为反省可以更容易地用 metaclass 以及一些巧妙的类构造逻辑使用 descriptors .
使这项工作起作用的关键是元类——它搜索在它创建的要查找的类上定义的属性。
例子
|
|
|
3
0
正如我在一些文章中提到的
other
answers
,因为python 3.6,这个问题的解决方案非常简单,这要归功于
我们可以使用它来定义一个可以通过以下方式访问类的decorator:
然后可以用作普通的装饰:
|