是否有可能在类函数__add__中区分运算符+ =和+?

时间:2018-05-03 19:06:17

标签: python class addition

我有一个包含一些数据的类。对于此类的两个对象,Operator +应合并来自两个对象的数据并返回一个新对象。但是,如果在+ =运算符的情况下,添加对象的数据并返回self,则应该好得多。这里有一些伪代码来演示我想要实现的目标。

class BiGData:
  def __init__(self):
    self.data=[]
  def __add__(self,x):
    if (this is just a +):
      newData=BigData()
      newData.data += self.data
      newData.data += x.data
      return newData
    else: #(this is the += case)
      self.data += x.data
      return self

如果可以区分这两种使用__add__函数的情况,那么Python代码可以更好地阅读和理解!考虑一下:

x,y=BigData(),BigData()
z = x + y # z is a new object of the BigData class, 
          # which collects all data from both x and y
          # but data in x and y are intacked
x += y    # just append data from y to x
          # data in x has been changed

2 个答案:

答案 0 :(得分:7)

不,这是不可能的。

但是,如果您实施__iadd__(),那么+=将使用它。

答案 1 :(得分:2)

object.__iadd__(self, other)

+= object.__radd__(self, other)

+

请参阅datamodel以获取参考资料