gpt4 book ai didi

python - 确定描述符中的短运算符(+= like)用法

转载 作者:行者123 更新时间:2023-12-04 04:21:24 26 4
gpt4 key购买 nike

我现在正在尝试为模型字段创建一个描述符类,以保存其修改历史。

我可以通过重写 getattr 来确定在字段值上调用某些方法时的事实:

def __getattr__(self, attr):
print(attr)
return super().__getattr__(attr)

我可以看到重写方法的参数:

def __add__(self, other):
print(self, other)
return super().__add__(other)

问题是 += 运算符只是一个语法糖:

foo = foo + other

所以我无法将 += 处理为单个方法调用,它会触发 __add__,然后触发 __set__。我是否能够确定该值并未完全被新值替换,而是被添加/相乘/相除等?

最佳答案

使用__iadd__

For instance, if x is an instance of a class with an __iadd__() method, x += y is equivalent to x = x.__iadd__(y) . Otherwise, x.__add__(y) and y.__radd__(x) are considered, as with the evaluation of x + y.

关于python - 确定描述符中的短运算符(+= like)用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com