擅长:python、mysql、java
<p>不能修改内置类型,例如,不能在运行时添加新属性<sup>1</sup>:</p>
<pre><code>>>> setattr(str, "hello", lambda: "Hello custom str!")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't set attributes of built-in/extension type 'str'
</code></pre>
<p>我会尝试解析所有的文本字符串,并用自定义字符串子类的构造函数替换它们。这首先是:</p>
<ul>
<li><strong>显式</strong>,这使您和其他人更容易记住,这个字符串是不同的。在</li>
</ul>
<p>通常,i18n库有某种类型的字符串文本检测例程,在检测过程中可以派上用场。一旦这些字符串被收集起来,它或多或少只是<em>替换</em>。在</p>
<hr/>
<p><sup>1</sup>这也是一个原因,python不如ruby灵活。你不能只编写测试库,即猴子修补核心类,并在运行时向每个对象添加<a href="https://stackoverflow.com/questions/192649/can-you-monkey-patch-methods-on-core-types-in-python">^{<cd1>}</a>之类的方法。这里有一个有趣的技术讨论这些细微差别及其后果:<a href="http://blog.extracheese.org/2010/02/python-vs-ruby-a-battle-to-the-death.html" rel="nofollow noreferrer">http://blog.extracheese.org/2010/02/python-vs-ruby-a-battle-to-the-death.html</a></p>