0

私のアプリは、GUIレイヤーにQTを使用し、他の多くのライブラリを作成しました。

この他のlibの1つは非常に複雑で(型システムです)、可能な限り堅固にするためのアサートでいっぱいです。

ただし、このlibでassertがトリガーされると、Qtメインループは単純に続行します。Qt部分では(pyqtRemoveInputHookで)うまく機能するqt_debug()がありますが、残りのPythonライブラリでは何も機能しません。

そして、明らかに、Qtなしで使用できるはずなので、ライブラリ内のコードを変更することは避けたいと思います。

最善の解決策はアサーションフックですが、ぐるぐる回っていたにもかかわらず、それを行うための明確な方法はありませんでした。何か案が ?

4

1 に答える 1

4

使用assertは間違った方法です。1つには、Pythonが-O(または-OO)で実行されている場合、assertsはオフになります。もう1つは、エラーメッセージはあまり役に立ちません。そのライブラリは、例外を適切に使用するために再設計する必要があります。

ライブラリを現状のまま使用する限り、何をしたいですか?アプリを終了する必要がありますか?その場合は、独自のAssertionErrorクラスを作成し、そのクラスを自分のクラスに置き換えて、__builtins__で必要な処理を実行させることができます__init__。これを行う場合、あなたは完全にあなた自身であることに注意してください。

于 2012-09-26T15:52:50.357 に答える