如何解决以实例方法作为值的枚举
例如我有一个类来定义一些可以完成的操作:
class MathOps:
def __init__(self,a,b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
def subtract(self):
return self.a - self.b
在代码库的某个地方,这个 MathOps
对象被实例化。
operation1 = MathOps(10,5)
是否可以使用 Enum 来映射用户想要执行的数学运算?
class SelectOps(enum.Enum):
ADDITION = ... # please do operation1.add()
SUBTRACTION = ... # please do operation1.subtract()
例如,如果用户定义他想做“ADDITION”(这是在单独的配置文件中定义的),我想做这样的事情:
results = SelectOps['ADDITION'].value
如果用户想要做“减法”,
results = SelectOps['SUBTRACTION'].value
我可以这样做吗?
解决方法
您可以使用 dict
并存储方法本身,然后在适当的 MathOps
实例上调用它们
operators = {
"ADDITION": MathOps.add,"SUBTRACTION": MathOps.subtract,}
v1,v2,choice = 10,5,"ADDITION"
operation1 = MathOps(v1,v2)
method_to_call = operators[choice]
result = method_to_call(operation1)
print(result) # 15
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。