擅长:python、mysql、java
<p>Python做了一些操作,以便在类主体中定义的函数实际上表现为“方法”—因此,可以授权地添加“self”参数。在</p>
<p>不难理解这是如何实现的,并按计划为显式字典模拟它,但首先,考虑到可以使用字符串检索方法名,而不必按计划将它们存储在字典中,您可以简单地执行以下操作:</p>
<pre><code>class Animal(object):
...
def sleep(self, ...):
...
my_cow = Animal()
function = getattr(my_cow, "sleep")
function ( )
# and of course, the two preceeding lines can be in a single expression:
getattr(a, "sleep")()
</code></pre>
<p>现在,让我们来看看这本书-
由于您将实际的“sleep”函数定义为一个嵌套函数,它将“看到”存在于<code>initializeSleep()</code>的调用中的“self”变量-这意味着您所做的应该只是工作-只要您通过在<code>self.</code>前缀来修复对<code>initializeSleep()</code>的调用,如下所示:</p>
^{pr2}$
<p>把“self”参数从实际的“sleep”函数中去掉-它不需要它,
因为它将“看到”封闭范围中的非局部<code>self</code>变量:</p>
<pre><code>def initializeSleep(self):
RESTORED_HEALTH = 20
# other constants
def sleep():
self.health = RESTORED_HEALTH
# utilize other constants
return sleep
</code></pre>
<p>(在initializeSLeep中定义的其他常量也将在sleep中作为非本地变量可见)</p>