1) the code you wrote isn’t Python.
2) inferring the type is int isn’t guaranteed to be correct in this case
2) inferring the type is int isn’t guaranteed to be correct in this case
That's the downside of operator overloading - since it relies on types to resolve, they need to be known and can't be inferred.
No it’s not. It’s Optional[int] -> int at minimum. There are other completely valid signatures beyond that too.