s="ABC"
for k in ["isalnum()", "isalpha()", "isdigit()", "islower()", "isupper()"]:
for c in s:
print(c.k)
Run Code Online (Sandbox Code Playgroud)
获取此错误"AttributeError:'str'对象在执行上述代码时没有属性'k'".我提到了有关此错误的其他类似问题,但无法解决我的问题,我对python很新.
列表中的元素只是字符串.即使它们不是,c.k也总是要引用文字属性k,而不是与列表中的属性相对应的属性.
你需要用getattr; 但括号不是属性名称的一部分,您需要将它们关闭.
for k in ["isalnum", "isalpha", "isdigit", "islower", "isupper"]:
for c in s:
print(getattr(c, k)())
Run Code Online (Sandbox Code Playgroud)
您可能想要调用您在字符上列出的方法s.
一种可能性是使用getattr以按字符串名称查找对象的属性:
>>> s = "ABC"
>>> for k in ["isalnum", "isalpha", "isdigit", "islower", "isupper"]:
... for c in s:
... getattr(c, k)() # get the attribute, then call it
...
True
True
True
True
True
True
False
False
False
False
False
False
True
True
True
Run Code Online (Sandbox Code Playgroud)
或者,您可以str直接遍历类的方法:
>>> s = "ABC"
>>> for k in [str.isalnum, str.isalpha, str.isdigit, str.islower, str.isupper]:
... for c in s:
... k(c)
...
True
True
True
True
True
True
False
False
False
False
False
False
True
True
True
Run Code Online (Sandbox Code Playgroud)
(我使用了您所做的变量名称,但我建议至少重命名k为method.)
| 归档时间: |
|
| 查看次数: |
2007 次 |
| 最近记录: |