PHPで書かれたlibをpythonに書き直そうとしています。すべてのスフィンクス リクエストを処理します。init 関数で、デフォルトの検索モードと一致モードを設定しようとしていますが、少し問題が発生しました。設定ファイルからモードを取得します。
PHP では、定数を入力として使用する必要があります。
$this->sphinx->SetMatchMode(constant($this->conf['match_mode']));
これにより、構成ファイルの文字列が定数に変換され、すべてが機能します。私がこれをやろうとすると、トリッキーな部分はpythonで始まります:
self.sphinx.SetMatchMode(self.config['match_mode'])
私は得る:
AssertionError in
assert(mode in [SPH_MATCH_ALL, SPH_MATCH_ANY, SPH_MATCH_PHRASE, SPH_MATCH_BOOLEAN, SPH_MATCH_EXTENDED, SPH_MATCH_FULLSCAN, SPH_MATCH_EXTENDED2])
この場合、入力は整数である必要がありますが、入力は文字列であり、例外が発生するため変換できません-文字列はSPH_MATCH_ALL
.
invalid literal for int() with base 10: 'SPH_MATCH_ALL'
これを試すと:
print type(self.config['match_mode']) # -- string
print type(SPH_MATCH_ALL) # -- integer
print SPH_MATCH_ALL # -- 1
print SPH_MATCH_ANY # -- 0
したがって、私の質問は、文字列を整数またはそれが考えるものにどのように変換できるので、アサーションエラーが発生しないかということです。もちろん、if/else ステートメントを実行することもできますが、それはしたくありません。これを行うエレガントな方法はありますか?