【发布时间】:2019-08-14 20:33:34
【问题描述】:
我有一个有多个方法的类,我想存储所有可用的方法,这些方法在示例中很容易访问,就像这样
class Methods:
def foo(self, a):
return f'hello {a}'
def bar(self, b):
return f'hello {b}'
def methods_dict(self, var, **kwargs):
dic = {
'me' : self.foo(var),
'be': self.bar(var)
}
return dic
但在运行时,我的 methods_dict() 方法将执行其字典中的两个方法。
一方面我打算只在其中存储字符串并且它真的很容易访问,另一方面我可能不需要一次访问所有可用的方法。
有什么建议吗?
我打算如下使用这些方法
class InheritMethods(Methods):
def __init__(self, method_name):
self.method_name = method_name
def add_to_list(self, input):
arr = []
arr.append(self.method_dicts(input)[self.method_name]
return arr
为了清楚起见,我会根据输入的名称调用特定的方法,所以基本上是input == method_name
我可以做像if input == 'foo': do somethings.. 这样的条件语句,但是如果我最终有很多方法,我的代码会一团糟,所以我假设(!)这不是一个好主意
【问题讨论】:
-
你刚刚为自己发明了一个问题。我看不出有什么原因
-
你可以做
lambda _: self.foo(var),或者直接返回self.foo? -
@hilberts_drinking_problem 不,你不能,
foo是一个类的方法,不在methods_dict的范围内,你需要{'foo': self.foo} -
@LaurensKoppenol 我的错,我看错了帖子。也许
functools.partial是合适的,如果有的话。 -
如果有更多的可选参数是个好主意