在设计需要其他python库的python库时,一般方法是什么?

时间:2016-01-03 12:33:15

标签: python

我在Python 2.7和PySide中创建了一个应用程序。由于这个应用程序相当大,我不得不创建一些自定义库。这些库有时需要从其他自定义库中调用方法,因此我使库中的类继承了其他库'类。但是,这有时会导致继承解决问题,导致我必须创建冗余和非优雅的解决方案作为解决方法。

现在,我正在从头开始重写应用程序,我想确保以不依赖继承的方式设计我的自定义库。通常最好的方法是什么?

我想我应该使用with

from libs import envlib
from libs import diskoplib
from libs import dblib

class Something(object):
    def __init__(self, parent=None):
        super(Something, self).__init__()

    def do_something(self):
        names = None
        filepath = None
        id = None
        with envlib.Query() as e,
             diskoplib.Query() as d,
             dblib.Query() as db:

            id = e.get_opened_file_id()
            names = db.get_names()
            filepath = d.get_filepath()

        print id, names, filepath # ready to be used for something

这通常是一种好方法,还是有理由说这可能不是一个好方法?

1 个答案:

答案 0 :(得分:0)

创建类属性是一个更好的主意。感谢@jonsharpe和@JohnKeyes的建议。

from libs import envlib
from libs import diskoplib
from libs import dblib

class Something(object):

    # Class attributes
    _e = envlib.Query()
    _d = diskoplib.Query()
    _db = dblib.Query()

    def __init__(self, parent=None):
        super(Something, self).__init__()

    def do_something(self):
        id = self._e.get_opened_file_id()
        filepath = self._d.get_filepath()
        names = self._db.get_names()

        print id, names, filepath # ready to be used for something