python - 根据变量调用方法的方法?

标签 python variables dictionary methods

我已经有了一个可行的解决方案,但在我看来,对于长脚本的一部分来说,这不是一个很好的解决方案。

我的脚本使用了几种相似的方法,但差异太大而无法组合。但是,我想根据给定的变量调用其中一种方法。

方法的名称是这样构建的:

def read_A():
    #doing sth
def read_B():
    #doing sth else
def read_C():

等等

现在我想以 pythonic 方式调用这些方法,当字母 ('A', 'B', 'C', ...) 作为变量给出。

非 pythonic 解决方案是:

if var == "A":
    read_A()
if var == "B":
    read_B() .....

我希望找到一个更像 pythonic 的解决方案,让我可以像这样简单地调用这些方法:

var = "A"
read_var()      #This would call the method 'read_A()'

请注意,上面的代码只是我希望做的事情的一个形象,它不是一个工作示例!

最佳答案

我没有看到仅使用的问题

if var == 'A':
    read_a()

但是如果你想让它更“pythonic”,你可以使用字典将你的变量映射到方法,并根据字典中存储的结果执行它:

def read_a():
    print('Running method read_a')

def read_b():
    print('Running method read_b')

switch = {'A': read_a, 'B': read_b}

case = 'A'
switch.get(case)()
>> 'Running method read_a'
case = 'B'
switch.get(case)()
>> 'Running method read_b'

关于python - 根据变量调用方法的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46648164/

相关文章:

python - 谷歌驱动器 API : check if folder exists

python - 等待 child 使用 os.system

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 如何使用 foreach 循环动态执行 mysql 查询?

python - 如何对包含字典元素的列表求和

python - 如何获取十六进制字符串的输出以十六进制打印?

python - 检查python中目录的权限

c++ - 在循环运行的函数中声明变量的开销?

python - 如何迭代动态对象?

python - 将嵌套的 html 表转换为 python 中的嵌套字典?