shelve モジュールを使用して、プログラムに永続性を追加しています。最初はシェルブでデフォルトのbsddbを使用していましたが、gdbmに変更する必要があり、その後例外が発生しました:
Exception RuntimeError: 'maximum recursion depth exceeded in __subclasscheck__' in <type 'exceptions.AttributeError'> ignored
whichdb 呼び出しによって anydbm モジュールで発生 (およびキャッチ) されているようです。
コードは問題なく終了するため、悪いことは何もありませんが、ちょっと悪いように見えます。私の知る限り、警告モジュールを使用して印刷を抑制することができますが、例外を完全に削除したいと考えています。
私は他の場所(pylint、django、およびその他のモジュール/パッケージで発生した)で同様の問題を調べていましたが、どこでも「バグ」としてマークされているようです。anydbm/shelve モジュールでこのような動作の解決策を思いついた人はいますか?
編集1。このエラーの原因は次のとおりであることがわかりました: def getattr (self, attr): return getattr(self.config, attr)
別のクラスをラップするクラスをシェルブに保存しようとしています。そのため、getattr関数がオーバーライドされます。それを書いて無限ループにならないようにする方法はありますか?