我在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
这通常是一种好方法,还是有理由说这可能不是一个好方法?
答案 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