我正在尝试getattr
使用生成器在我的代码中使用函数
li=[]
m=[method for method in dir(li) if callable(getattr(li,method))]
print getattr(li,(str(i) for i in m))
错误:
TypeError: getattr(): attribute name must be string
如果我在 i 上使用字符串强制,那么为什么会出现此错误?
另外,如果我使用代码
li=[]
m=[method for method in dir(li) if callable(getattr(li,method))]
for i in range(10):
print getattr(li,str(m[i]))
然后没有错误
我是python新手,如果我犯了非常基本的错误,请原谅我,请有人详细说明错误。谢谢
编辑:同样的原则适用于这段代码(这是一个来自 Dive into python 的例子)。在这里,做了同样的事情,为什么没有错误?
def info(object, spacing=10, collapse=1):
"""Print methods and doc strings.
Takes module, class, list, dictionary, or string."""
methodList = [e for e in dir(object) if callable(getattr(object, e))]
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
print "\n".join(["%s %s" %
(method.ljust(spacing),
processFunc(str(getattr(object, method).__doc__)))
for method in methodList])