파이썬에서는 함수가있는 모듈이나 함수가 포함 된 클래스가있는 모듈을 정의하는 것이 더 나은 것으로 간주됩니까? [닫은]


13

내 코드에서 위의 두 옵션 중 하나가 똑같이 잘 작동하지만 두 가지 방법의 장단점을 찾는 데 관심이 있습니다.

답변:


9

그것은 당신의 요구에 정직하게 달려 있습니다. 대부분의 경우 기능 모듈이 원하는 것입니다.

파이썬 클래스 (imho)는 C #, C ++ 또는 Java의 클래스와 같이 생각해서는 안되며 함수 집합을 더 큰 부모로 그룹화 해야하는 논리적 인 이유가 있어야합니다. 데이터 구조는 이에 대한 좋은 예입니다. 일반적으로 사용되는 느슨하게 수집 된 함수 세트 대신 클래스에 직접 적용되는 합동 함수 세트

  • 기능 모듈 : 범용, 유틸리티 및 기타 "전역"기능
  • 기능 클래스 모듈 : 유사한 요구, 서로 다른 링크 된 목록 데이터 유형 또는 오디오 처리 기능 또는 다른 트리 유형의 그룹화 된 클래스.

모듈은 유사한 시스템의 전체 계층 그룹화를위한 것입니다. 일반적으로 단일 모듈에서 모든 유틸리티 기능, 다른 모듈에서 모든 데이터, 내 데이터 계층 및 더 "상위"유형 모듈 아래의 커넥터가 있습니다. 모듈은 단지 정신적 인 그룹이기 때문에 어떤 유형의 시스템 (클래스 또는 기능, 솔직히이 둘의 혼합)에 관한 것이 아니라 모듈 아래의 시스템 간의 논리적 연결에 관한 것입니다.


7
파이썬 클래스와 다른 언어의 대조를 이해하지 못합니다. 논리적으로 그룹화 할 이유가없는 함수가있는 클래스는 어떤 언어로되어 있습니까?
Guy Sirton

7

기본적인 질문은 모듈 / 클래스의 다른 인스턴스 가 필요한지 여부 입니다. 파이썬 모듈은 싱글 톤 과 같습니다. 항상 같은 객체 를 참조 합니다. 즉, 인스턴스가 필요한 경우 클래스가 필요합니다.

그러나 인스턴스가 필요하지 않은 경우 "개체"를 초기 상태로 설정해야 할 수도 있습니다. 일반 모듈을 사용하면 분명히 가능하지만 일부 값을 설정하는 것보다 초기화가 복잡한 경우 클래스의 __init__가독성을 높이기 위해 코드를 초기화하는 것이 좋습니다.


2
전역 변수가있는 모듈 대 멤버 변수가있는 클래스와 같이 상태가있는 것에 대해 이야기하고있을 것입니다. 클래스에 메서드 만 있고 상태가없는 경우 여러 인스턴스를 가질 이유가 거의 없습니다
thbusch

3
@thbusch, 예, 인스턴스필요하다는 의미입니다 .
kr1

모듈 대 클래스를 이해하게 만드는 인스턴스의 필요성에 대해 이야기했을 때. 여러 대의 자동차를 만들어야하는 것처럼 클래스를 사용하는 것이 좋습니다. 계산기 모듈을 만들 필요가없는 계산기 모듈 대 클래스는 해당 모듈에서 더하기 및 빼기 메소드를 사용해야합니다.
tazboy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.