문제

정적 방법으로 가득 찬 파이썬 클래스가 있습니다. 원시 기능보다는 클래스에 이들을 포장하는 장점과 단점은 무엇입니까?

도움이 되었습니까?

해결책

아무것도 없습니다. 이것이 모듈의 모듈입니다 : 그룹화 관련 기능. 정적 방법으로 가득 찬 클래스를 사용하면 javaitis에서 울부 짖습니다. 정적 함수를 사용하는 유일한 시간은 함수가 클래스의 필수 부분 인 경우입니다. (사실, 어쨌든 클래스 메소드를 사용하고 싶을 것입니다.)

다른 팁

아니요. 기능을 만드는 것이 좋습니다. 관련된 경우 자체 모듈에 배치하십시오. 예를 들어, 다음과 같은 수업이있는 경우 다음과 같습니다.

class Something(object):

    @staticmethod
    def foo(x):
        return x + 5

    @staticmethod
    def bar(x, y):
        return y + 5 * x

그러면 모듈을 갖는 것이 더 나을 것입니다.

# something.py

def foo(x):
    return x + 5

def bar(x, y):
    return y + 5 * x

그렇게하면 다음과 같은 방식으로 사용합니다.

import something
print something.foo(10)
print something.bar(12, 14)

네임 스페이스를 두려워하지 마십시오. ;-)

기능이 서로 또는 글로벌 상태에 의존하는 경우 세 번째 접근 방식도 고려하십시오.

class Something(object):
    def foo(self, x):
        return x + 5

    def bar(self, x, y):
        return y + 5 * self.foo(x)

something = Something()

이 솔루션을 사용하면 다른 함수의 동작을 무시하거나 생성자를 사용하여 종속성을 주입 할 수 있으므로 기능을 분리하여 테스트 할 수 있습니다.

클래스는 함수 호출 사이에 지속되어야하고 개별 방식으로 참조 해야하는 데이터 세트 (인스턴스 속성)와 상호 작용하는 것보다 기능 세트가있는 경우에만 유용합니다.

수업에 정적 방법 이외의 다른 것이 포함되어 있지 않은 경우, 수업은 단지 구문을 제공하며 직선 기능은 훨씬 더 명확하며 필요한 모든 것입니다.

나는 벤자민에 동의합니다. 정적 방법이 많지 않고 아마도 많은 기능이 있어야합니다. 그리고 구성하려면 클래스보다는 모듈을 사용하는 것에 대해 생각해야합니다. 그러나 코드를 OO로 리팩터링하려면 또 다른 문제입니다.

장점은 없을뿐만 아니라 방법으로 가득 찬 모듈을 사용하는 것보다 느리게 만듭니다. 파이썬에서 정적 방법이 Java 또는 C#에있는 것보다 정적 방법이 훨씬 적으며 매우 특별한 경우에 사용됩니다.

기능의 특성에 따라 다릅니다. 그들이 강하게 관련이없고 (그들 사이에 최소한의 통화) 상태가 없다면, 그렇지 않으면 모듈에 버려야한다고 말할 것입니다. 그러나 창 밖으로 상속을 던질 때 동작을 수정해야한다면 발에 자신을 쏘아 올 수 있습니다. 그래서 내 대답입니다 아마도, 그리고 모듈이 메소드 세트를 수집하는 가장 좋은 방법이라고 항상 특정 시나리오를 살펴보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top