dur*_*2.0 7 python pyqt decorator pyqt4 python-decorators
我有一个相当大的涉及装饰器来调试我想动态添加到类的PyQt信号.有没有办法动态地向类中添加装饰器?
我可能从错误的角度处理这个问题,所以这就是我想要完成的.
到目前为止,我已经考虑了几种可能的解决方案:
object和PyQt的内置QtCore.QObject)之外,这将很容易.我想我可以将这个装饰器附加到我的基类,一切都会按预期运行.但是,在这个特定的应用中并非如此.我不想将所有类更改为具有相同的基类.object或QtCore.QObject:我不知道这将如何实际工作.但是,从理论上讲,我可以将其中一个基类更改__init__为new_init我在装饰器中定义的吗?这看起来真的很危险,但也许这是一个好方法?__metaclass__属性添加到我想要将装饰器注入的类中.我认为这是不可能的,因为要插入此属性,必须已经构造了类.因此,我定义的任何元类都不会被调用.这是真的? 我尝试了一些元类魔法的变种,但似乎没有任何效果.我觉得使用元类可能是实现我想要的方式,但我似乎无法让它工作.
再说一遍,我可能会把这一切都搞错了.基本上我想将上面引用的装饰器中的行为附加到我的应用程序中的所有类(甚至可能是选择类的列表).另外,如果有必要,我可以重构我的装饰师.如果我用装饰器或其他机制附加此行为,我真的不在乎.我只是假设这个装饰器已经完成了我想要的单个类,所以可能很容易扩展.
装饰器只不过是自动应用的callable.要手动应用它,请使用装饰器的返回值替换该类:
import somemodule
somemodule.someclass = debug_signals(somemodule.someclass)
Run Code Online (Sandbox Code Playgroud)
这将somemodule.someclass使用debug_signals我们传递原始somemodule.someclass类的返回值替换名称.
| 归档时间: |
|
| 查看次数: |
2984 次 |
| 最近记录: |