擅长:python、mysql、java
<p>最具python风格的是使用<code>def</code>来表示:</p>
<pre><code>def isalpha_or_space(self):
if self == "":
return False
for char in self:
if not (char.isalpha() or char.isspace()):
return False
return True
</code></pre>
<p>把它作为<em>方法</em>贡献给<code>str</code>并不容易,因为Python不鼓励对内置类型进行monkeypatching。我的建议是把它作为一个模块级函数。你知道吗</p>
<p>尽管如此,仍然可以模拟方法的接口,因为Python中的大多数名称空间都是可写的,如果您知道在哪里可以找到它们的话。下面的建议不是Pythonic,而是依赖于实现细节。你知道吗</p>
<pre><code>>>> import gc
>>> def monkeypatch(type_, func):
... gc.get_referents(type_.__dict__)[0][func.__name__] = func
...
>>> monkeypatch(str, isalpha_or_space)
>>> "hello world".isalpha_or_space()
True
</code></pre>