I am trying to add a class object with a number, but I'm confused on how to go about adding a class object with two numbers. For example, this is my hypothetical add class method:
class A:
def __add__(self, b):
return something
I know how to add this so far:
a = A()
print(a + 1)
But, what if I want to add it like this?
a = A()
print(a + 1 + 2)
Should I use *args for the add class method?
No, you can't use multiple arguments. Python executes each +
operator separately, the two +
operators are distinct expressions.
For your example, object + 1 + 2
really is (object + 1) + 2
. If (object + 1)
produces an object that has an __add__
method, then Python will call that method for the second operator.
You could, for example, return another instance of A
here:
>>> class A:
... def __init__(self, val):
... self.val = val
... def __repr__(self):
... return f'<A({self.val})>'
... def __add__(self, other):
... print(f'Summing {self} + {other}')
... return A(self.val + other)
...
>>> A(42) + 10
Summing A(42) + 10
<A(52)>
>>> A(42) + 10 + 100
Summing A(42) + 10
Summing A(52) + 100
<A(152)>