擅长:python、mysql、java
<p>Python鼓励鸭子键入或“请求宽恕比允许更容易”(EAFP),这意味着您应该假设您的参数是正确的,如果不是,则适当地处理这种情况。</p>
<p>我们假设“如果它走路说话像鸭子,那它一定是鸭子”。请看这里:</p>
<pre><code>class Duck:
def quack(self):
return 'quack!'
class Person:
def quack(self):
return 'Hey there!'
d = Duck()
p = Person()
def make_it_quack(duck):
return duck.quack()
print(make_it_quack(d))
print(make_it_quack(p))
</code></pre>
<p>如您所见,这两种类型都有效。这是故意的行为。如果遇到了一些没有定义该方法的东西,您将得到^{cd1>}的期望值。解决这一问题的方法是使用异常处理:</p>
^{pr2}$
<p>我个人说了这些,可不总是坚持下去。例如,如果我不能保证对象的类型,那么我将使用^{{cd2>}之类的东西来正确地指导代码。如果不是,那么它将返回^{{cd3>}。</p>
<p>选择哪一个使代码更干净,并适合情况,这取决于您的自由裁量。有一些建议,例如“始终使用try/除了IOErrors”(这一个原因是有原因的)。</p>