首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为用户创建设置选项的优雅解决方案

为用户创建设置选项的优雅解决方案
EN

Stack Overflow用户
提问于 2021-05-26 15:47:08
回答 1查看 38关注 0票数 0

我有两个设定选项。用户可以选择testtest1作为设置。如果他选择test,则执行方法test以及方法xytest

我用映射来调用方法testtest1,这也是可行的。但是,我仍然需要调用第二个方法,即xy<name of mapping method>。是否有一个更好、更优雅的解决方案,用户可以在testtest1之间进行选择,从而得到不同的结果?我的意思是,没有更好的解决方案来绕过这些if语句吗?

代码语言:javascript
复制
def test():
  return "Hi"

def xytest():
  return "I'm Zoe"

def test1():
  return "Hello"

def xytest1():
  return "I'm Max"

mapping = {
    "test": test,
    "test1": test1,
}



def try_method(option):
  parameter = mapping[option]()
  # How can I shorten both if statements, as in the above call
  if option == 'test': 
    parameter2 = xytest()
  if option == 'test1':
    parameter2 = xytest1()
  # Something like
  # parameter2 = 'xy'+mapping[option]()
  print(parameter)
  print(parameter2)

# the user could only choose between test and test1
try_method('test')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-26 16:14:29

为了消除if子句,我建议使用稍微不同的mappingmapping包含可以根据option参数调用的函数列表:

代码语言:javascript
复制
#!/usr/bin/python
def test():
  return "Hi"

def xytest():
  return "I'm Zoe"

def test1():
  return "Hello"

def xytest1():
  return "I'm Max"

mapping = {
    "test": [ test, xytest ],
    "test1": [ test1, xytest1]
}


def try_method(option):

  print(mapping[option][0]())
  print(mapping[option][1]())

# the user could only choose between test and test1
try_method('test')
try_method('test1')

输出:

代码语言:javascript
复制
Hi
I'm Zoe
Hello
I'm Max
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67708379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档