2014-12-08 2 views
0

의 문자열은 그래서 첫 번째 줄이 너무 긴LINEBREAK 파이썬 소스 코드

return "Cargo(location=%s, cargocapacity=%s, cargo=%s, name=%s, mast_count=%s)" \ 
     % (
      self.location, 
      self.cargocapacity, 
      self.cargo, 
      self.name, 
      self.mast_count) 

있습니다. 어떻게하면 선을 깰 수 있을까요? 내가

return "Cargo(location=%s, cargocapacity=%s, cargo=%s, \ 
     name=%s, mast_count=%s)" \ 
     % (
      self.location, 
      self.cargocapacity, 
      self.cargo, 
      self.name, 
      self.mast_count) 

을하고 반환 된 문자열을 인쇄 할 경우 난 withespace 많이 얻을.

이 방법이 있습니까? 어쩌면 단일 인수로 문자열을 결합 할 수 있습니까? 그러나 이것은 많은 코드 라인을 추가 할 것입니다.

+1

템플릿 사용을 고려하십시오. 'template = "Cargo (location = {location}, cargocapacity = {cargocapacity}, cargo = {cargo}, name = {name}, mast_count = {mast_count})"; return template.format (self)' – wim

+0

속성의'str' 형식이 아닌'repr'이 필요할 것입니다. – jonrsharpe

답변

2

문자열을 함께 넣으면 "like " "this"이 하나가됩니다. "like this". 라인간에 사용할 수 있습니다.

return ("Cargo(location=%s, cargocapacity=%s, cargo=%s, " 
     "name=%s, mast_count=%s)") % (
     self.location, 
     self.cargocapacity, 
     self.cargo, 
     self.name, 
     self.mast_count) 
1

괄호 사이의 문자열을 분할 할 수 있고 파이썬은 자동으로 컴파일 시간에 그들과 합류 있습니다

당신이 라인이 끝나기 전에 \를 사용하는 경우 괄호가 정말 필요하지 않습니다
return (
    "Cargo(location=%s, cargocapacity=%s, cargo=%s, " 
    "name=%s, mast_count=%s)") % (
      self.location, 
      self.cargocapacity, 
      self.cargo, 
      self.name, 
      self.mast_count) 

하지만, 괄호로 이것을 조금 더 깔끔하게 처리 할 수 ​​있습니다.

+0

[\는 PEP-8에서 권장하지 않습니다] (https://www.python.org/dev/peps/pep-0008/#maximum-line-length). 공백이 없어서 공백이 눈에 띄지 않기 때문입니다. 경우에 따라 결과 구문이 실제로 유효하기 때문에 분명한 이유없이 완전히 잘못된 동작을 보입니다. – Kevin

+0

@Kevin : 길다란'with' 문이 있다면, 여러 행에 걸쳐 그것을 깰 수있는 유일한 방법은 백 슬래시를 사용하는 것입니다. 그러나 당신은 옳습니다. PEP 8은 좋은 이유로 그 사용을 권장하지 않습니다. –

+0

물론, 어쨌든 [contextlib.ExitStack'] (https://docs.python.org/3/library/contextlib.html#contextlib.ExitStack)을 사용하고 싶습니다. – Kevin