我有一个相当大且涉及面很广的decorator to debug PyQt signals,我想动态地将其添加到类中。有没有一种方法可以动态地向类中添加装饰器?在
我可能从错误的角度来处理这个问题,所以这里是我想要完成的。在
到目前为止,我已经考虑了几个可能的解决方案:
object
和PyQt的内置QtCore.QObject
),那么这就很容易了。我想我可以把这个装饰器附加到我的基类上,这样一切都会如期完成。但是,在这个特定的应用程序中,情况并非如此。我也不想把所有的类都改成具有相同的基类。在object
或QtCore.QObject
:我不知道这实际上是如何工作的。然而,理论上,我可以将这些基类中的一个__init__
更改为我在decorator中定义的new_init
?这看起来真的很危险,很老套,但也许这是一个好的方法?在__metaclass__
属性添加到我想注入decorator的类中。我认为这是不可能的,因为要插入这个属性,类必须已经构造好了。因此,我定义的任何元类都不会被调用。这是真的吗?在我尝试了一些元类魔术的变体,但似乎没有任何效果。我觉得使用元类可能是实现我想要的东西的一种方式,但我似乎无法让它发挥作用。在
再说一次,我可能把这一切都搞错了。实际上,我想将上面引用的decorator中的行为附加到应用程序中的所有类(甚至可能是一个选择类的列表)。另外,如果需要,我可以重构我的装饰器。我真的不在乎是否将此行为附加到装饰器或其他机制。我只是假设这个decorator已经实现了我想要的单个类的功能,所以它可能很容易扩展。在
装饰器只不过是自动应用的可调用项。要手动应用它,请用decorator的返回值替换该类:
这会将
somemodule.someclass
名称替换为返回值debug_signals
,我们传递了原始的somemodule.someclass
类。在相关问题 更多 >
编程相关推荐