Python中的反射增广加法(__iadd__)?

对于“更好”的更简单的代码,我想知道是否可以执行保留/反射的增强加法分配。


[我已经检查了 Stack Overflow 是否有类似的问题,但找不到任何问题。因此,如果这是重复我的道歉,请您链接答案。]


例如,使用字符串正则赋值给出:


In[1]:  s = 'foo'

In[2]:  s += 'bar'

In[3]:  print(s)


Out[1]: foobar

但是有没有什么办法可以用反射的顺序来做到这一点,而不用做s = 'bar' + s.


那么是否有任何类似于=+(不是真实的)的操作,例如:


In[1]:  s = 'foo'

In[2]:  s =+ 'bar'

In[3]:  print(s)


Out[1]: barfoo

在此先感谢您的帮助 :)


慕尼黑8549860
浏览 142回答 1
1回答

慕斯王

这在 Python 中不存在。你不能创建一个新的操作符,所以它也不是你可以实现的。但是,没有问题不能用另一个级别的间接来解决!class ReflectedAugmentedAssignableString(object):    def __init__(self, value):        self.value = value    def __iadd__(self, other):        self.value = other + self.value        return self    def __unicode__(self):        return self.valueraastring = ReflectedAugmentedAssignableString("foo")raastring += "bar"print(raastring)>>> "barfoo"注意:这很糟糕^,请不要这样做。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python