Скажем, у меня есть класс, определенный в moduleA.py
, к которому я хочу добавить метод, используя некоторый метод загрузчика, который принимает имя второго модуля и метод, определенный там, который должен быть связан
class ClassA(object):
def __init__(self,config):
super(ClassA, self).__init__()
self.a = 1
self.b = 2
self.meth1 = self. bind_method(config)
def bind_method(self,config):
# load method
<return method defined in config as a str 'moduleB.meth2'>
def calling_method():
return self.meth1()
, где метод, определенный в moduleB.py
, выглядит примерно так:
def meth2(self):
return self.a + self.b
Дело в том, что я хочу написать meth2
, чтобы иметь доступ к переменным классаClassA
как только оно будет связано.Таким образом, когда у вас будет что-то вроде:
from moduleA import ClassA
A = ClassA()
aout = A.calling_method()
Вызов A.calling_method()
правильно вызывает метод, определенный в moduleB.py
.
Я видел такую привязку, выполненную в ответахв SO после создания экземпляра ClassA
с использованием types.MethodType
, но я не смог выяснить, как связать внутри определения класса, чтобы это делалось внутри при создании экземпляра класса.
Будем весьма благодарны за любые предложения о том, что следует использовать в методе bind_method
.