擅长:python、mysql、java
<p>你的方法是Python,只是做一些调整。你知道吗</p>
<p>首先,不要返回<code>try</code>块内部。可以在变量中保留<code>id</code>值,并在<code>else</code>子句中正确返回它。原因是您正在执行多个操作,比如获取属性和转换为列表(在其他情况下可能还有更多操作),而您只是在捕获<code>AttributeError</code>。当您使用<code>else</code>时,您可以很容易地处理其他异常,而且从编码风格的角度来看,它更优雅。你知道吗</p>
<p>其次,您不需要使用<code>getattr</code>在这种情况下,您可以简单地使用直接属性访问。你知道吗</p>
<p>另外,与使用<code>try-except</code>相反,您可能希望检查对象是否具有该属性,然后返回其值,但由于<em>请求原谅比获得许可更容易。原则上<code>try-exepct</code>更好。你知道吗</p>
<pre><code>def get_id_list(person):
try:
id = person.id
except AttributeError:
return []
else:
return [id]
</code></pre>