我的目标是编写一个类,使我能够确定调用哪个方法( A1或A2 ),同时创建对象p将调用B,B将调用A。
def A1():
return 'A1_g'
def A2():
return 'A2_g'
class test:
def __init__(self, means=None):
self.means=means
def A1(self):
return 'A1'
def A2(self):
return 'A2'
def B(self,A):
new_string='methodB called '+A()
print new_string
def C(self):
q=self.B(self.means)
return q
p=test(means=A1)
p.C()我得到了一个输出"methodB名为A1_g“。但我想要"methodB,A1“
如果删除最前面的2fn定义,就会得到"NameError: name‘A1“未定义”。想了解如何以及为什么要做到这一点。
发布于 2015-11-19 04:26:20
>>> p = test(means=test().A1)
>>> p.C()
methodB called A1或者,更简单地说:
>>> test(means=test().A1).C()
methodB called A1选项:将方法名作为字符串传递
如果我们希望将方法的名称作为字符串传递,而不是传递方法本身,那么我们需要按如下方式更改方法B:
def B(self,A):
method = getattr(self, A)
new_string='methodB called ' + method()
print new_stringgetattr函数返回由变量A命名的self属性。
现在,可以按以下方式运行:
>>> p = test(means="A1")
>>> p.C()
methodB called A1https://stackoverflow.com/questions/33795241
复制相似问题