输入用户被视为方法,而不仅仅是python中的常见字符串

时间:2018-12-01 05:08:56

标签: python python-3.x user-input

我尝试使用python创建一个简单的程序,该程序从用户那里获取自定义输入,并将其用于具有这种输入格式的列表中。

$ python name_app.py
$ <method> <position_index> <value>

我已经尝试过类似的事情。

 lst = []
 n = input().split()
 print(n[0])
 test = lst.n[0](n[1], n[2])
 print(test)

示例输入如下:

$ python name_app.py
$ append 0 2

好吧,我认为如果我通过输入,代码将是这样的

lst.append(0, 2)

但是我遇到了如下错误

File "app.py", line 5, in arr                                                                                                                 
    test = lst.n[0](n[1], n[2])                                                                                                                 
AttributeError: 'list' object has no attribute 'n'  

我如何使用户输入视为“方法”对象而不是通用属性?

2 个答案:

答案 0 :(得分:1)

您正在寻找getattr()

test = getattr(lst, n[0])(n[1], n[2])

但是随后您将遇到n[1]n[2]都是字符串而不是整数的问题。因此,您需要将它们传递给int()才能对其进行解析。另外,您可能无法将两个参数传递给list.append()方法,因为它只需要一个参数。

最后,我认为您可能会发现cmd module是一种将用户输入转换为方法调用的更便捷的方法,而不是直接使用getattr()

答案 1 :(得分:1)

您可以使用getattr()从用户提供的字符串中调用list的方法或任何模块或类。

lst = []   
n = input().split()
getattr(lst, n[0])(n[1])
print(lst)

将数字5附加到列表中,如下所示:

$ python name_app.py
$ append 5
$ [5]