이름: yong27 (yong27@nownuri.net)
홈페이지: http://biohackers.net
2002/8/27(화) 15:28 (MSIE5.5,WindowsNT5.0,T312461) 211.180.34.41 1152x864
Re.. GenBank레코드의 Reference객체  
지금 보시려고 하는 ref는 GenBank레코드를 파싱한내용중에서도,
Reference부분만을 객체로 만든것의 리스트입니다.

객체라는 말이 중요합니다. 인스턴스라고도 하지요
객체는 속성과 메쏘드를 갖습니다.
클래스는 객체를 만들어내는 붕어빵틀같은겁니다.
예를들어,
과일 이란 클래스가 있으면,
사과는 과일이란 클래스의 붕어빵틀에서 만들어진 붕어빵 즉 객체입니다.

사과의 속성에는 색깔, 경도등이 있습니다.
사과.색깔 = '빨강'
사과.경도 = '단단함'

속성이 어떤것들이 있는지는 클래스에서 정의합니다.
실제 속성값이 어떤지는 객체마다 다릅니다.

메쏘드란 것도 있습니다. 객체의 행동을 정의한것이죠
속성이 형용사면 메쏘드는 동사입니다.
사과.익는다
사과.상한다
등이 있을 수 있습니다.

과일은 클래스고, 사과는 객체입니다.
바나나도 과일클래스의 객체죠. 속성과 메쏘드들이 사과랑 약간은 다르지요.

지금 질문하신 ref안의 내용들이 바로 객체입니다.
그렇담 ref를 만들어낸 붕어빵틀 즉 클래스는 뭐냐하니
Bio\GenBank\Record.py 안에 정의된 Reference라는 클래스입니다.
그 클래스가 만들어낸 객체(인스턴스)가 바로, ref 리스트내에 있는 녀석들입죠....

파이썬에서는 객체를 그냥 print하면,
<Bio.GenBank.Record.Reference instance at 0x0179E140> 라고만 찍습니다.
다양한 속성과 메쏘드들을 가진녀석을 어떻게 프린트하겠습니까? ^^;

Bio\GenBank\Record.py 의 class Reference를 보시면, 그녀석의 속성과 메쏘드들을 알수 있죠
소스를 보니 보니깐,  다음의 속성들이 보이는군요
   def __init__(self):
       self.number = ''
       self.bases = ''
       self.authors = ''
       self.title = ''
       self.journal = ''
       self.medline_id = ''
       self.pubmed_id = ''
       self.remark =

이얘긴 뭐냐하니. 그 객체.number하면 number를 문자열형식으로 볼수 있다는 겁니다.

따라서, 다음처럼 시도해보시길..

for refObject in ref:
   print refObject.number, refObject.bases, refObject.authors

그러면, 그 리스트내에 있는 모든 객체에 대해서, 하나씩 (for문을 돌면서)
그 객체의 number속성, bases속성, authors속성이 보일껍니다.

오호... 그 밑에 보니깐, __str__ 이란 메쏘드가 있군요.
이 메쏘드는 해당 객체를 프린트하고자 할때 리턴되는 값을 프린트하는
연산자오버로딩이라고 하는 일종의 내장 메쏘드입니다.

그렇담 다음처럼 해도 됩니다.

for refObject in ref:
   print refObject

바로 위는 다음이랑 똑같은겁니다.

for refObject in ref:
   print refObject.__str__()

그러면 __str__에 표시된것처럼, 저널이름 저자이름등이 모두 합쳐진 문자열이 출력될껍니다.

객체에 대해 감잡히시나요?
이게 감잡히면, 프로그래밍이 쉬워집니다.
프로그램잘하려면, 문제에서 객체를 잘 선별해서 적절한 속성과 메쏘드를 부여하는걸 잘해야합니다.

pickle은 객체를 영구히 존속시키고자 할때 쓰는겁니다.
클래스야 소스코드내에 정의되있는것이지만,
클래스에 의해 만들어진 객체는 메모리에만 있는 녀석이죠
따라서 이 내용을 좀 영구히 갖고싶다. (파일에 저장한다 등등..) 할경우에
사용합니다.
pickle.dump는 객체를 파일에 쓰는거고 load는 파일로 있는 객체를 다시 메모리로 올리는겁니다.




  이름   메일   관리자권한임
  내용 입력창 크게
                    답변/관련 쓰기 폼메일 발송 수정/삭제     이전글 다음글         창닫기