처음 몇 가지 배경. 간단한 파일 형식을 파싱하고 나중에 파이썬 코드에서 결과를 다시 사용하고자하므로 매우 간단한 클래스 계층 구조를 만들고 파서를 사용하여 원본 파일의 원본 레코드에서 개체를 생성했습니다. .python 2.6에서 여러 인스턴스 속성을 인쇄하는 우아한 방법은 무엇입니까?
동시에 데이터를 레거시 데이터베이스에로드하려는 경우 로더 파일은 간단한 탭 구분 형식을 사용합니다. 나는 그것을 좀 더 쉽게 무엇을 무엇을 볼 수 있도록하기 위해 Template
클래스를 사용하는 거라고 생각하지만 인쇄 너무 많은 열이 있기 때문에
print "{0}\t{1}\t....".format(record.id, record.attr1, len(record.attr1), ...)
: 가장 간단한 방법은 그런 짓을하는 것입니다 예 :
templ = Template("$id\t$attr1\t$attr1_len\t...")
그리고 난 그냥 파생 된 값에 대한 몇 가지 추가 키워드로하는 substitute
호출에 의해 사용되는지도의 장소에서 기록을 사용할 수 있습니다 생각 :
print templ.substitute(record, attr1_len=len(record.attr1), ...)
불행하게도 이것은 실패합니다. 레코드 인스턴스에는 __getitem__
속성이 없습니다.
그래서 제 질문은 두 가지이다 :
- 내가
__getitem__
를 구현해야하는 방법 그렇다면 어떻게? - 거기에 당신이 이미 이름을 알고있는 많은 속성을 출력해야하는 곳을위한 더 우아한 방법이 있습니까? 당신이 ATTR1의 길이 레코드 클래스의 속성이나 특성을 한 경우
감사! 'AttributeError's를'KeyError's로 바꾸기 위해 try-except를 추가했습니다. – wds