擅长:python、mysql、java
<p>如果您只想让未实现的方法不做任何事情,那么可以尝试这样的方法,而不是多行<code>try/except</code>构造:</p>
<pre><code>getattr(obj, "sleep", lambda: None)()
</code></pre>
<p>但是,这对于函数调用来说并不一定明显,所以可能:</p>
<pre><code>hasattr(obj, "sleep") and obj.sleep()
</code></pre>
<p>或者,如果您想在调用实际上可以调用的东西之前更加确定:</p>
<pre><code>hasattr(obj, "sleep") and callable(obj.sleep) and obj.sleep()
</code></pre>
<p>在Python中,这种“三思而后行”的模式通常不是首选的方式,但它完全可读,并且适合一行代码。</p>
<p>当然,另一种选择是将<code>try/except</code>抽象为一个单独的函数。</p>