擅长:python、mysql、java
<p>我把fridge的回答改为:</p>
<pre><code>from inspect import isfunction
class Immutable(type):
def __new__(cls, name, bases, dct):
for key, val in dct.items():
# Look only at methods/functions; ignore those with
# "special" names (starting with an underscore)
if isfunction(val) and val.__name__[0] != '_':
dct[key] = memoized(val)
return type.__new__(cls, name, bases, dct)
</code></pre>
<p>decorator是提前知道的,所以我不需要在对象本身中指定它。我也只关心方法,尽管由于我还不明白的原因,当<code>Immutable.__new__</code>看到它们时,对象的所有方法都是未绑定的,因此它们是函数,而不是方法。我还排除了名称以下划线开头的方法:在记忆的情况下,您不希望对<code>__init__</code>或{<cd3>}之类的方法做任何操作。在</p>