擅长:python、mysql、java
<p>这是不必要的。只需使用<code>getattr</code>:</p>
<pre><code>class WebmethodBaseClass():
def post(self, methodName):
getattr(self, methodName)("kapow")
</code></pre>
<p>唯一需要注意的是,您必须确保只有打算用作webmethods的方法才能这样使用。IMO最简单的解决方案是采用一种约定,即非webmethods以下划线开头,并让<code>post</code>方法拒绝服务此类名称。在</p>
<p>如果您真的想使用装饰器,请尝试以下方法:</p>
^{pr2}$
<p>并在调用方法之前让<code>post</code>检查<code>is_webmethod</code>属性是否存在。在</p>