擅长:python、mysql、java
<p>在这种情况下,我建议进行<strong>duck</strong>测试。尝试pickle到一个临时文件或内存文件中(如果您认为合适),然后如果失败,则丢弃结果,如果重命名成功。</p>
<p>为什么?</strong></p>
<p>在python中,可以通过两种方式检查对象是否具有某些属性。</p>
<p>检查对象是否是某个<a href="http://docs.python.org/3.2/glossary.html#term-abstract-base-class" rel="nofollow">Abstract Base Class</a>的实例。E、 g.<a href="http://docs.python.org/3.2/library/numbers.html#module-numbers" rel="nofollow">^{<cd1>}</a>“数字层次结构的根。如果只想检查参数x是否为数字,而不考虑是哪种类型,请使用isinstance(x,number)。”</p>
<p>或者尝试一下,然后处理异常。这在很多情况下都会发生。Python哲学是以鸭为基础的。<a href="http://docs.python.org/3.2/glossary.html#term-duck-typing" rel="nofollow"><strong>Duck typing</strong></a>、<a href="http://en.wikipedia.org/wiki/Duck_test" rel="nofollow"><strong>duck test</strong></a>和<a href="http://docs.python.org/3.2/glossary.html#term-eafp" rel="nofollow"><strong>EAFP</strong></a>是关键字。</p>
<p>我甚至相信,在来自社区的压力下,python3已经正确地引入了第一个python3,而许多人仍然坚信使用python的方法是使用duck。</p>
<p>AFAIK没有可以检查的特殊先决条件,也没有在pickling的情况下可以检查对象的任何<a href="http://docs.python.org/3.2/glossary.html#term-abstract-base-class" rel="nofollow">^{<cd2>}</a>。剩下的就是鸭子了。</p>
<p>也许可以尝试其他的东西,但可能不值得。人工反省,很难初步查明是否适合腌制。</p>