python - 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
在此先感谢您的帮助 :)
解决方案
这在 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"
注意:这很糟糕^,请不要这样做。
推荐阅读
- xamarin.forms - 托管时 IdentityServer4 不重定向到移动应用程序重定向 URI
- apache -
导致我们的 Apache 服务器产生“内部错误” - jakarta-ee - 在多页面应用程序中使用带有 javaee 容器(wildfly)的 vue
- json - Postgres函数返回未知数量的列
- visual-studio-code - 在 VSCode 中,如何像在 WebStorm 中一样选择当前元素及其周围环境?
- python - 如何在 StyledTextCtrl 中创建查找对话框?
- c# - 简单的 c# 在 AWS 存储桶中放置和获取单个日志行
- angular - RxJS : 使用另一个 observable 过滤一个 observable
- javascript - 循环在 2 个不同区域重复时该怎么办
- php - Laravel Artisan 从错误的项目加载