source

Python에서 체인 메서드 호출 들여쓰기 스타일

nicesource 2023. 7. 18. 21:47
반응형

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

반응형