【发布时间】:2017-02-05 18:55:40
【问题描述】:
>>> a = 55
>>> b = "hello"
>>> ~a # this will work
>>> ~b # this will fail
上面的失败并不令人意外,但假设我想重载 ~ 运算符来处理字符串。我对 Python 还很陌生,所以我对此进行了一些挖掘,并发现了一些我无法工作的诱人建议。我知道我可以创建某种新类,但我希望以下内容也能正常工作:
>>> ~"alpha bravo"
这可能吗?如果是这样,怎么做?这种超载怎么办?
【问题讨论】:
-
如果你觉得很勤奋,那么你可以编写一个前端来解析代码并根据需要修改 AST。
-
您究竟希望
~'alpha bravo'做什么?也许还有其他数据结构(字符串除外)可以满足您的需求? -
我一直很享受最近对 C# 的一项更改,该更改取自 PHP(可能取自其他地方)并将变量嵌入字符串中。在我意识到我可以相当容易地实现
myformat( "You have {beers} on the wall.")之后,我开始考虑~"You have {beers} on the wall"。这些是人们在尝试更多地了解一门语言时会想到的事情。 -
You can have it soon in python 3.6,它看起来像
f"You have {beers} on the wall."。
标签: python string overloading operator-keyword