我有一个'str'对象的子类,我需要将它应用到应用程序域。由于应用程序中充满了string literal和str()强制转换,因此需要很长时间才能将它们全部更改为自定义字符串类。我知道可以重写'str()',但我不确定字符串文字。在
我知道这不是一个好主意,但应用程序需要它。可以用Python实现吗?如果没有,是否需要我修改'stringlib,它是'str'对象的C实现?在
我还知道,修改解析器使应用程序运行被认为是一种非常糟糕的编程实践。这可以通过扩展而不是解析器修改来实现吗?在
Tags:
不能修改内置类型,例如,不能在运行时添加新属性1:
我会尝试解析所有的文本字符串,并用自定义字符串子类的构造函数替换它们。这首先是:
通常,i18n库有某种类型的字符串文本检测例程,在检测过程中可以派上用场。一旦这些字符串被收集起来,它或多或少只是替换。在
1这也是一个原因,python不如ruby灵活。你不能只编写测试库,即猴子修补核心类,并在运行时向每个对象添加^{} 之类的方法。这里有一个有趣的技术讨论这些细微差别及其后果:http://blog.extracheese.org/2010/02/python-vs-ruby-a-battle-to-the-death.html
我遇到这个问题是因为我想做类似的事情-str.格式python中的行为>;=2.7使用python>;=2.4。stringformat(https://github.com/florentx/stringformat)中的FormattableString似乎是正确的做法,但它只有在我能够使它适用于文本时才有用。在
尽管有很多注释,但是使用我在这里找到的代码,monkey修补python中的内置代码和文本似乎是可能的:https://gist.github.com/295200。这似乎是阿明·罗纳彻写的,当然不是我写的。在
最后,我能够在Python2.6中做类似的事情,尽管它通常只在2.7中工作。在
上面链接中的示例显示了如何添加新方法而不是替换现有方法。在
这个小练习促使我将str和unicode monkey补丁添加到stringformat包中,现在您只需执行以下操作:
^{pr2}$这可以从这里克隆:“https://github.com/igg/stringformat,直到/除非它被拉入“官方”stringformat。哈。我只有两个超链接,所以你没有点击!在
相关问题 更多 >
编程相关推荐