저는 소수의 모듈 (약 4 개 정도)으로 구성된 작은 파이썬 프로그램을 가지고 있습니다. 주 모듈은 튜플 목록을 생성하여 여러 개의 레코드를 나타냅니다. 이 튜플은 다른 모듈에서 반환 할 수있는 간단한 함수 (예 : get_records()
)를 통해 사용할 수 있습니다.파이썬 모듈간에 튜플을 교환해도 괜찮습니까?
그러나 좋은 디자인인지 잘 모르겠습니다. 문제는 다른 모듈이 튜플의 각 요소의 인덱스를 알아야한다는 것입니다. 이것은 모듈 간의 결합을 증가 시키며, 주 모듈을 사용하고자하는 사람에게는 그리 투명하지 않습니다.
나는 대안의 몇 가지 생각할 수 :
- 모듈 상수 (예를 들어,
IDX_RECORD_TITLE
,IDX_RECORD_STARTDATE
등)로 사용할 수있는 튜플 요소의 인덱스 값을 확인합니다. 이렇게하면title = record[3]
과 같은 마법 숫자가 필요 없습니다. 튜플을 사용하지 말고 레코드 클래스를 만들고 이러한 클래스 개체의 목록을 반환하십시오. 이점은 클래스 메소드가
record.get_title()
과 같은 자체 설명 이름을 갖게된다는 것입니다.대신 튜플을 사용하지 말고 사전을 사용하십시오. 따라서이 시나리오에서 함수는 사전 목록을 반환합니다. 사전 키가 자명하다는 장점이 있습니다 (모듈을 사용하는 누군가는이를 알고 있어야합니다). 그러나 이것은 거대한 간접비처럼 보입니다.
나는 (클래스/객체의 코딩 오버 헤드없이 주위의 화합물 데이터를 전달하는 것은 매우 쉽습니다) 파이썬의 큰 장점 중 하나가 될 튜플을 발견, 그래서 나는 현재 (1), 그러나 아직도 무슨 일이 것 궁금 사용 최선의 방법이되어야합니다.
'namedtuple()': 정확히 내가 찾고있는 것! 감사. – Rabarberski
흠, 그냥'namedtuple'이 Python 2.5에서 지원되지 않는다는 것을 알았습니다. (2.6에서 추가되었습니다), Mac OS X과의 호환성을 위해 사용합니다. 아마도 어쨌든 클래스를 사용하는 데 의지해야 할 것입니다 ... – Rabarberski