2015-01-07 3 views
0

나는 파이썬에서 데이터베이스 쿼리를 수행하는 다양한 기능을 제공하는 모듈을 가지고있다. 그것은 다음과 같습니다 conn 데이터베이스 연결 개체입니다파이썬 : 클래스없이 데이터를 캡슐화 하시겠습니까?

def do_some_query(conn): 
    ## logic goes here 

def do_something_else(conn): 
    ## logic goes here 

. 물론 이것은 conn 개체를 지나가는 것을 의미합니다. 사용자가 세션에 대해 한 번 연결 개체를 설정하고 함수를 호출 할 수있게하고 싶습니다.

분명히 모든 것을 클래스에 넣는 것은 좋은 대답이지만, 사용자가 함수를 사용하려고 할 때마다 사용자가 클래스를 초기화하도록하고 싶지는 않습니다. IE는,이처럼 API를 싶지 않는 :

from database_module import DatabaseClass 

db = DatabaseClass() 
db.connect(...) 
db.do_some_query() 

을하지만이 같은 :

import database_module as dm 

dm.connect(...) 
dm.do_some_query() 

이 방법은 사용자로부터 클래스 '숨기기'하나에 있는가, 또는없이 캡슐화를 제공 클래스?

답변

1

전역 변수에 연결을 넣는 connect 함수를 사용할 수 있으며 다른 함수가이 함수를 사용합니다.

_conn = None 

def connect(): 
    global _conn 
    _conn = ... 

def query(): 
    _conn.execute("SELECT ...")