Как оценить переменные и методы объекта по указателю на функцию, не являющуюся членом
Я создал объект и назначил функцию, не являющуюся членом, как указатель на один из его методов. Теперь можно получить доступ к переменным и вызвать методы объекта из функции, не являющейся членом?
def process_event():
# How to assess a and b variables and invoke
# foo method specific to that object?
return /*something */
class Testing(object):
def __init__(self, a, b, process_event):
self.a = a
self.b = b
self.process_event_ptr = process_event
def foo(self)
return self.a + self.b
def main():
obj1 = Testing(10, 20, process_event)
obj2 = Testing(100, 200, process_event)
print obj1.process_event_ptr()
print obj2.process_event_ptr()
if __name__ == "__main__"
main()
1 ответ
Вы можете связать process_event
к примеру, используя types.MethodType
, но фактически вы динамически создаете новую функцию-член, например:
import types
def process_event(instance):
return instance.foo()
class Testing(object):
def __init__(self, a, b, process_event):
self.a = a
self.b = b
self.process_event_ptr = types.MethodType(process_event, self)
def foo(self):
return self.a + self.b
obj1 = Testing(10, 20, process_event)
obj2 = Testing(100, 200, process_event)
print(obj1.process_event_ptr())
print(obj2.process_event_ptr())
Out[]:
30
300