파이썬 오류 "속성은 문자열이어야합니다" 나는 왜이 오류가 나타나는지? 내가 코드를 사용하는 경우 내가 아주 기본적인 실수를하고있는 경우gettattr, 내가 <pre><code>li=[] m=[method for method in dir(li) if callable(getattr(li,method))] print getattr(li,(str(i) for i in m)) </code></pre> <p><strong>오류</strong>을 생성</p>를 사용하여 내 코드에서 <code>getattr</code> 기능을 사용하려고
또한,
li=[]
m=[method for method in dir(li) if callable(getattr(li,method))]
for i in range(10):
print getattr(li,str(m[i]))
은 그런 저를 용서, 내가 파이썬에 새로운 오전 오류
이없는 사람은 오류에 정교한하시기 바랍니다 . 감사합니다
: 동일한 원칙이이 코드에서 작용합니다 오류가없는 이유는 다음과 같습니다.
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])
그러나 어떤 시합 문자열 강제는 중요하지 않습니까? – sum2000
파이썬에서는 문자열 강제 형변환이 아니므로, 단순히'str()'에 전달한 값으로부터 새로운 문자열을 생성하면됩니다. 그것은 생성자 표현식 내부에 있으므로 중요하지 않으므로 함수로 전달하는 것이 아닙니다. –
OK, 당신은 발전기를 전달하는 대신에 먼저 내 주장을 전달할 것이라고 말하고 싶습니까? – sum2000