class NotAdder: def __init__(self): self.i = 0 def __add__(self, other): return NotImplemented class Adder: def __init__(self): self.i = 1 def __add__(self, other: NotAdder): return self.i + other.i def __radd__(self, other: NotAdder): return self.i + other.i if __name__ == '__main__': na = NotAdder() a = Adder() na + a # if a + na => NotImplemented then # na.__radd__(a)