У меня есть класс, который имеет несколько обратных вызовов и собственный интерфейс, например:
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'''
функция connect - это, например, 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)
Так что я могу использовать MyService, переопределив my_on_service_resolved.
Проблема заключается в "атрибутах" загрязнения. В реальной реализации 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):
'''
'''