我已經有一些回調和自己的接口,像一類:壓倒一切的回調避免污染屬性
class Service:
def __init__(self):
connect("service_resolved", self.service_resolved)
def service_resolved(self, a,b c):
''' This function is called when it's triggered
service resolved signal and has a lot of parameters'''
的連接功能例如gtkwidget.connect,但我想,這個連接是東西比較一般,所以我決定用一種「扭曲的像」的方法:
class MyService(Service):
def my_on_service_resolved(self, little_param):
''' it's a decorated version of srvice_resolved '''
def service_resolved(self,a,b,c):
super(MyService,self).service_resolved(a,b,c)
little_param = "something that's obtained from a,b,c"
self.my_on_service_resolved(little_param)
所以我可以通過重寫my_on_service_resolved使用的MyService。
問題是「屬性」污染。在實際的實現中,Service有一些屬性可能會在MyService和子類MyService中被意外覆蓋。
如何避免屬性污染?
我也想過是一個「包裝」之類的做法,但我不知道這是否是一個很好的解決方案:
class WrapperService():
def __init__(self):
self._service = service_resolved
# how to override self._service.service_resolved callback?
def my_on_service_resolved(self,param):
'''
'''