【问题标题】:python: encapsulate data without a class?python:在没有类的情况下封装数据?
【发布时间】:2015-01-07 16:22:17
【问题描述】:

我在 python 中有一个模块,它提供了用于执行数据库查询的各种功能。 它看起来像这样:

def do_some_query(conn):
    ## logic goes here

def do_something_else(conn):
    ## logic goes here

其中conn 是一个数据库连接对象。当然,这意味着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()

有没有办法对用户“隐藏”类,或者在没有类的情况下提供封装?

【问题讨论】:

    标签: python oop encapsulation


    【解决方案1】:

    您可以有一个connect 函数将连接放入全局变量中,其他函数将使用它。

    _conn = None
    
    def connect():
        global _conn
        _conn = ...
    
    def query():
        _conn.execute("SELECT ...")
    

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 1970-01-01
      • 2021-10-05
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 2012-12-12
      相关资源
      最近更新 更多