为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑8549860 2022-01-11 20:29:38
对于“更好”的更简单的代码,我想知道是否可以执行保留/反射的增强加法分配。[我已经检查了 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在此先感谢您的帮助 :)
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

这在 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.value


raastring = ReflectedAugmentedAssignableString("foo")

raastring += "bar"

print(raastring)


>>> "barfoo"

注意:这很糟糕^,请不要这样做。


查看完整回答
反对 回复 2022-01-11
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信