我尝试使用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'
我如何使用户输入视为“方法”对象而不是通用属性?
答案 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]