Python에서 체인 메서드 호출 들여쓰기 스타일
PEP-8을 읽고 함수 호출의 마지막 인수와 같은 줄에 닫는 괄호를 넣어야 한다는 것을 알았습니다.
ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False)
아마도 긴 표현은 피하는 것이 가장 좋을 것입니다.하지만 그것이 바람직하지 않다면, 어떻게 여러 개의 체인 방식 호출을 진행하시겠습니까? 마감하는 부모님이 새 전화를 받아야 합니까?
ShortName.objects.distinct().filter(
product__photo__stockitem__isnull=False
).values_list('value', flat=True)
인수 없음 방법은 어떻습니까?중간 반환 값을 참조하지 않고 여러 줄로 작성하는 방법은 무엇입니까?
ShortName.objects.distinct(
).filter().values() # looks ugly
업데이트: Python에서 연결된 메서드의 줄을 끊는 방법에 대한 중복 질문이 있습니다.승인된 답변은 각 새 줄을 점으로 시작하는 jQuery 스타일에서 친숙한 방법을 제안합니다.저자가 아무런 이유나 권위 있는 참고 자료를 제시하지 않아서 그런 스타일이나 대안에 대한 확인을 받고 싶습니다.
괄호를 여는 것보다 줄 연속 문자가 선호되는 경우입니다.
ShortName.objects.distinct() \
.filter().values() # looks better
메서드 이름이 길어지고 메서드가 인수를 사용하기 시작하면 이 스타일의 필요성이 더욱 분명해집니다.
return some_collection.get_objects(locator=l5) \
.get_distinct(case_insensitive=True) \
.filter(predicate=query(q5)) \
.values()
PEP 8은 상식의 척도이자 실용적이고 아름다운 것을 보는 눈으로 해석됩니다.코드를 읽기 어렵거나 추하게 만드는 PEP 8 지침을 기꺼이 위반합니다.
그렇긴 하지만, 만약 여러분이 PEP 8과 자주 대립하는 것을 발견한다면, 그것은 여러분의 공백 선택을 초월하는 가독성 문제가 있다는 신호일 수 있습니다 :-)
()를 사용하여 라인 결합을 강제로 수행하고 다음 작업을 수행하는 것이 가장 좋습니다.
(ShortName.objects.distinct() # Look ma!
.filter(product__photo__stickitem__isnull=False) # Comments are allowed
.values_list('value', flat=True))
이상적이지는 않지만 시각적으로 눈에 띄고 통화 체인이 무엇인지 어느 정도 분명하게 해준다는 점이 마음에 듭니다.그것은 라인 끝 코멘트를 허용합니다, 그것은\
new line은 그렇지 않습니다.
언급URL : https://stackoverflow.com/questions/8683178/chained-method-calls-indentation-style-in-python
'source' 카테고리의 다른 글
ASP.NET 유효성 검사기를 사용한 날짜 유효성 검사 (0) | 2023.07.18 |
---|---|
"j = ++(i | i); 및 j = ++(i & i);" 식은 값 오류여야 합니까? (0) | 2023.07.18 |
ORACLE/SQL Server의 마이너스와 예외 차이 (0) | 2023.07.18 |
Git: 구체적인 약속을 기반으로 하는 방법은 무엇입니까? (0) | 2023.07.18 |
.htaccess / Apache2를 사용하여 간단한 php 애플리케이션으로 하위 디렉토리에서 워드프레스 애플리케이션을 구성하는 방법은 무엇입니까? (0) | 2023.07.18 |