Я хочу передать класс и его методы в класс. У меня нет проблем с передачей класса, так как он доступен во время инициализации экземпляра, но методы (когда передаются отдельно) не являются.
Нефункциональный пример сильно упрощен, и могут быть изменены только классы Caller и Callable. , первоначальный вызов должен оставаться неизменным. Я бы предпочел не go с exe c или eval, если это вообще возможно.
class Caller(object):
def __init__(self, **kwargs):
super(Caller, self).__init__()
self.klass = kwargs.get('klass', None)
self.func = kwargs.get('func', None)
self.klassParams = kwargs.get('klassParams', None)
def call(self):
klass = self.klass(**self.klassParams)
# Call the function
someFunc = self.func
klass.someFunc()
class Callable(object):
def __init__(self, **kwargs):
super(Callable, self).__init__()
def someFunction():
pass
c = Caller(klass=Callable, func=someFunction, klassParams={'some':'param'})
c.call()
Это, очевидно, потерпит неудачу с NameError: name 'someFunction' is not defined