2010-01-24 2 views
1

도 확실하지 나는 철탑 프로젝트를 가지고 모델의 구성 요소 내에서 내가 다른 쿼리 개체에서 사용할 __init__.py에서 전역 변수, 문서를 가지고 . (doc은 내가 가짜 DB로 사용하고있는 XML 파일의 Document 핸들입니다.) __init__.py의 스코프 끝은 언제입니까? 현재 doc.unlink()를 사용하여 문서를 비우는 것이 아니며 어디에 넣을 지 잘 모르겠습니다.파일론 : 무료 모듈 수준 변수? 모듈 수준이 ...</p> <p>여기에 정확하지만 경우

소비 객체 (Query)를 만들 때 고려해야하는 대안 설계에는이 문서의 클래스 수준 변수가 있습니다 (즉,이를 싱글 톤으로 지정). 그러나 내 Query 개체의 수명은 항상 doc가 새 Document 핸들을 다시 할당받는 것과 같습니다.

class Query(object): 
    doc = None 

    def __init__(self, content=None): 
     self.content = content 
     if self.doc == None:       
      self.doc = parse(os.path.join(config['app_conf']['xmldb'], "sample_search_result.xml")) 

문서 내의 요소 주소가 계속 변경되어 나타낼 수 있습니다.

누구나 도움을주고 싶습니까?

답변

0

개체는 1) 개체 참조가 존재하지 않거나 2) 통역사가 끝나는 경우에만 존재합니다. 모듈/패키지는 private dict의 모든 모듈 수준 이름에 대한 참조를 유지합니다. 다른 모든 모듈과 sys.modules, 에있는 모듈에 대한 모든 참조를 삭제하면 해당 모듈 내의 모든 객체에 대한 참조가 모두 해제됩니다.

0

의사의 개체를 globals에 넣는 것이 좋습니다. 불변 객체이기 때문에 저장할 수있는 완벽한 장소가 될 것입니다.

(객체의 메소드를 호출 할 때 __init__으로 또는 명시 적으로 중) 어떤 컨트롤러에서 globals을 참조하고 Query 객체에 전달할 수있는 것보다 당신은 또한 (컨트롤러의 session에서 문서 객체를 저장하기 위해 시도 할 수 있습니다 당 경우 세션 읽기 필요)