Python 中的 Reflected Augmented Addition (__iadd__) 是吗?
Is Reflected Augmented Addition (__iadd__) in Python?
对于 'nicer' 更简单的代码,我想知道是否可以执行 reserved/reflected 增广加法赋值。
[我检查了 Stack Overflow 是否有类似问题,但找不到任何问题。因此,如果这是重复我的道歉,请 link 回答。]
例如,字符串的常规赋值给出:
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
在此先感谢您的帮助:)
这在 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"
注意:这很糟糕^,请不要这样做。
对于 'nicer' 更简单的代码,我想知道是否可以执行 reserved/reflected 增广加法赋值。
[我检查了 Stack Overflow 是否有类似问题,但找不到任何问题。因此,如果这是重复我的道歉,请 link 回答。]
例如,字符串的常规赋值给出:
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
在此先感谢您的帮助:)
这在 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"
注意:这很糟糕^,请不要这样做。