いくつかの背景:私は大銀行で働いており、変更できず、インポートするだけのPythonモジュールを再利用しようとしています。また、新しいユーティリティ/関数などをインストールするオプションもありません(LinuxでPython 2.6を実行しています)。
私は現在これを持っています:
私のモジュールでは:
from common.databaseHelper import BacktestingDatabaseHelper
class mfReportProcess(testingResource):
def __init__(self):
self.db = BacktestingDatabaseHelper.fromConfig('db_name')
'testingResource'クラス内で呼び出されるメソッドの1つには、次のものがあります。
with self.db as handler:
これで倒れます:
with self.db as handler:
AttributeError: 'BacktestingDatabaseHelper' object has no attribute '__exit__'
実際、__exit__
「BacktestingDatabaseHelper」クラスにはメソッドがありません。このクラスは変更できません。
しかし、私が再利用しようとしているこのコードは、他のアプリでも完全に機能します-なぜ私がこのエラーを受け取り、他に誰もいないのか誰かが知っていますか?__exit__
ローカルで定義する方法はありますか?
よろしくお願いします。
追加するために編集:
DBアクセスを設定するために独自のクラスを追加しようとしましたが、機能させることができません。これをモジュールに追加しました。
class myDB(BacktestingDatabaseHelper):
def __enter__(self):
self.db = fromConfig('db_name')
def __exit__(self):
self.db.close()
そして追加:
self.db = myDB
メインクラスのinit属性に追加しましたが、次のエラーが発生します。
with self.db as handler:
TypeError: unbound method __enter__() must be called with myDB instance as first argument (got nothing instead)
これを適切に行う方法に関する提案はありますか?