是否可以在字符串上重载 ~ 运算符?

Is it possible to overload the ~ operator on strings?

>>> a = 55
>>> b = "hello"
>>> ~a  # this will work
>>> ~b  # this will fail

上面的失败并不奇怪,但假设我想重载 ~ 运算符来处理字符串。我是 Python 的新手,所以我对此进行了一些深入研究,发现了一些诱人的建议,但我无法开始工作。我知道我可以创建某种新的 class,但我希望以下内容也能正常工作:

>>> ~"alpha bravo"

这可能吗?如果是这样,如何?如何进行这种超载?

不,这在 Python 中是不可能的。您无法以可靠的方式向内置类型添加新方法。

您可以做的一件事是子类化字符串,并定义魔术方法 __invert__。但它不适用于字符串文字,仅适用于您的子类的实例。