是否可以在字符串上重载 ~ 运算符?
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__
。但它不适用于字符串文字,仅适用于您的子类的实例。
>>> a = 55
>>> b = "hello"
>>> ~a # this will work
>>> ~b # this will fail
上面的失败并不奇怪,但假设我想重载 ~ 运算符来处理字符串。我是 Python 的新手,所以我对此进行了一些深入研究,发现了一些诱人的建议,但我无法开始工作。我知道我可以创建某种新的 class,但我希望以下内容也能正常工作:
>>> ~"alpha bravo"
这可能吗?如果是这样,如何?如何进行这种超载?
不,这在 Python 中是不可能的。您无法以可靠的方式向内置类型添加新方法。
您可以做的一件事是子类化字符串,并定义魔术方法 __invert__
。但它不适用于字符串文字,仅适用于您的子类的实例。