假设我在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
中定义的方法。
在使用types.MethodType
实例化ClassA
之后,我已经在上的答案中看到了这种绑定,但是我还不能挖掘如何在类定义中绑定,以便在类被实例化时在内部完成绑定。
关于bind_method
方法中应该做什么的任何建议都将非常感谢。
跳过我不清楚的配置内容,绑定本身如下所示:
重要的是,您绑定到类,而不是实例。这样,如果对实例调用
meth1
,它将自动接收实例作为第一个参数。因为meth2()是一个函数,所以它是一个描述符,您可以通过调用uuGet_uuu()方法来绑定它。
相关问题 更多 >
编程相关推荐