gpt4 book ai didi

python - 强制 str() 和两个字符串文字创建自定义字符串?

转载 作者:行者123 更新时间:2023-12-01 06:12:37 25 4
gpt4 key购买 nike

我有“str”对象的子类,我需要将其应用到应用程序域。由于应用程序充满了字符串文字和 str() 转换,因此需要很长时间才能将它们全部更改为自定义字符串类。我知道可以覆盖“str()”,但我不确定字符串文字。

我知道这不是一个好主意,但应用程序需要它。可以用Python来做吗?如果不是,是否需要我修改“stringlib”(“str”对象的 C 实现)?

我还意识到,修改解析器以使应用程序运行被认为是一种非常糟糕的编程实践。这可以通过扩展而不是修改解析器来实现吗?

最佳答案

您不能修改内置类型,例如您无法在运行时添加新属性1:

>>> 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'

我会尝试解析所有文字字符串并将它们替换为自定义字符串子类的构造函数。首先也是最重要的是:

  • 明确,这使您和其他人更容易记住该字符串是不同的。

通常 i18n 库有某种代码的字符串文字检测例程,这在检测过程中可能会派上用场。一旦收集了这些字符串,它或多或少只是替换

<小时/>

1 这也是 python 不如 ruby​​ 灵活的原因之一。你不能只编写测试库,猴子修补核心类并添加类似 should_equal 的方法。到运行时中的每个对象。以下是关于这些细微差别及其后果的有趣技术演讲:http://blog.extracheese.org/2010/02/python-vs-ruby-a-battle-to-the-death.html

关于python - 强制 str() 和两个字符串文字创建自定义字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com