考慮以下裝飾:適用裝飾類類方法
class connector(object):
def __init__(self, signal):
self.signal = signal
def __call__(self, slot_func):
def wrapper(*args, **kwargs):
slot_func(*args, **kwargs)
self.signal.connect(wrapper)
而繼信號,類方法我需要裝飾:
from signalslot import Signal
update = Signal()
class manager(object):
# SOME CODE CUT
@connector(update)
def update(self):
print("I'm updating, yay!!!!")
正如你可以看到我需要通過裝飾一些額外的參數,在這種情況下 - 我需要連接到信號。 如何通過自我?
我之所以問這個,因爲它沒有與下面的錯誤,如果我嘗試運用這種裝飾的方法,而不是一個函數:
TypeError: update() missing 1 required positional argument: 'self'
更具體地說,如果我試圖發出信號:
update.emit()
是的,我在該項目中使用"signalslot"。