2011-10-25 10 views
0

ここには様々なバージョンのPythonが動作するいくつかのサーバーがあります。これらのサーバーでは、MySQLの対話が必要なスクリプトを実行しています。 Python MySQLdbモジュールを使用するラッパークラスを作成しましたが、古いモジュールではこのモジュールは存在しません。これを回避するには、通常のようにラッパークラスを使用する場合は、MySQLモジュールがサーバーに存在するかどうかを調べる必要があります。それ以外の場合は、bashを使用して作成したバックアップのMySQLクラスに切り替えます。Pythonクラスの選択

私の質問です:このような2つのクラスを切り替えるエレガントな方法はありますか?

私が考えることができる唯一の方法は、MySQLdbモジュールがロードされているかどうかに応じて、さまざまな機能を切り替えるMySQLラッパークラスの中に "if"ステートメントを入れることです。重要な点は、スクリプトが2つのクラスのどちらを使用しているかを認識していないことです。スクリプト自体のコードは、関係なく同じでなければなりません。私はPythonの初心者ですので、事前に助けていただきありがとうございます。

+0

"これらのサーバでは...."スクリプトはPythonで書かれていますか?もしそうなら、あなたはPythonで継承を使うことができ、これにより混乱が減り、if-elseを間接呼び出しに変更することができます。クラシックなデザインパターンの原則。 –

答えて

2

両方のモジュールが同じAPIを使用している場合は、通常の方法は、いくつかの共通の名前の下にそれらのいずれかをインポートすることです:

try: 
    import MySQLdb as mysql 
except ImportError: 
    import mymodule as mysql 

、その後、いつものように、その名前を使用します。

+0

ありがとう、私はあなたが "としてインポートする"ことができるか分からなかった:-) – Jak