programing

파이썬 클래스에서 메소드를 주문하는 좋은 방법은 무엇입니까?

closeapi 2023. 10. 23. 21:49
반응형

파이썬 클래스에서 메소드를 주문하는 좋은 방법은 무엇입니까?

파이썬 수업에서 메소드를 주문하고 싶은데, 정확한 순서가 뭔지 모르겠어요.

이클립스에서 PyDev로 메소드를 추출하면, 이클립스는 수정된 메소드 위에 메소드를 올립니다.그러나 이렇게 하면 상위 레벨 세부 정보보다 하위 레벨 세부 정보가 우선됩니다.밥 아저씨 말에 의하면, 제 코드가 신문의 헤드라인처럼 읽히도록 반대로 해야 한다고 합니다.자바로 프로그래밍을 할 때는 그의 조언을 따를 뿐입니다.

파이썬을 위한 최선의 방법은 무엇입니까?

다른 사람들이 지적했듯이, 당신의 방법을 주문하는 올바른 방법은 없습니다.어쩌면 PEP 제안이 유용할지도 모르지만, 어쨌든.당신의 질문에 최대한 객관적으로 접근하도록 하겠습니다.

  • 인터페이스 우선: 퍼블릭 메소드와 파이썬 매직 함수가 클래스의 인터페이스를 정의합니다.대부분의 경우, 귀하를 비롯한 개발자들은 클래스를 변경하기 보다는 클래스를 사용하고자 합니다.따라서 그들은 그 수업의 인터페이스에 관심을 가질 것입니다.소스 코드에서 먼저 입력하면 사용자가 상관하지 않는 구현 세부 정보를 스크롤할 수 없습니다.

  • 속성, 마법 방법, 공개 방법:수업의 인터페이스의 모든 부분인 이 세 가지 사이의 최적의 순서를 정의하기는 어렵습니다.Ethan Furman이 말했듯이, 전체 프로젝트에서 하나의 시스템을 고수하는 것이 가장 중요합니다.일반적으로 사람들은 기대합니다.__init__()수업에서 제일 좋은 첫 번째 기능을 하기 때문에 다른 마법 방법들을 바로 아래에서 따라 합니다.

  • 읽기 순서: 기본적으로, 이야기를 하는 두 가지 방법이 있습니다: 상향식 또는 하향식.고급 기능을 우선시함으로써, 개발자는 처음 두 줄을 읽음으로써 수업에 대한 대략적인 이해를 할 수 있습니다.그렇지 않으면 클래스를 이해하기 위해 전체 클래스를 읽어야 할 것이고 대부분의 개발자는 그럴 시간이 없습니다.경험의 법칙으로, 몸에서 불려지는 모든 방법보다 방법을 우선해야 합니다.

  • 클래스 메소드 및 정적 메소드:일반적으로 이는 위에서 설명한 읽기 순서에 의해 암시됩니다.일반적인 방법은 모든 방법을 호출할 수 있으므로 우선입니다.클래스 메소드는 클래스 메소드와 정적 메소드만 호출할 수 있고 다음에 옵니다.정적 메서드는 클래스의 다른 메서드를 호출할 수 없으며 마지막에 옵니다.

대부분의 이러한 규칙은 파이썬에 특화된 것이 아닙니다.저는 메소드 순서를 강제하는 언어를 알지 못합니다.

정확한 순서가 없습니다.시스템을 선택하고 고수합니다.제가 사용하는 것은:

class SomeClass(object):

    def __magic_methods__(self):
        "magic methods first, usually in alphabetical order"

    def _private_method(self):
        "worker methods next, also in alphabetical order"

    def a_method(self):
        "then normal methods, also in alphabetical order"

나는 장고의 출처에서 본 이단과 비슷한 일을 하는데, 주요 차이점은 큰 "##########" 블록 댓글을 차단하여 영역을 구분합니다.

예를들면,

class SomeClass(object):

    #################
    # Magic Methods #
    #################
    def __magic_methods__(self):
        "magic methods first"

    ##################
    # Public Methods #
    ##################
    def a_method(self):
        "then normal methods, in order of importance"

    ###################
    # Private Methods #
    ###################
    def _private_method(self):
        "then worker methods, grouped by importance or related function"

분명히 이것은 소규모 수업에는 덜 유용합니다.

코드를

class Bar(_Foo):
    pass

class _Foo:
    pass

수업 이후로 예외를 제기합니다._Foo사용하기 전에 정의해야 합니다.함수에 대해서도 유사한 예외 상승 예를 찾을 수 있습니다.

def bar(f=_foo):
    pass

def _foo():
    pass

이러한 예를 고려할 때, 일반적으로 공개 클래스와 기능보다 먼저 프라이빗 클래스와 기능을 정의하는 것이 타당합니다.그렇기 때문에 일관성을 유지하고 공적인 방법보다 사적인 방법을 먼저 규정하는 것이 타당합니다.

언급URL : https://stackoverflow.com/questions/10289461/what-is-a-good-way-to-order-methods-in-a-python-class

반응형