1) No, myobject( 10 ) calls operator() with i=10.
A constructor call has the syntax ClassOrStuctName( parameters )
operator() is called via the syntax VariableName( parameters )
2) The only difference between struct and class in Python is default
access in structs is public and in classes is private. Otherwise
they are absolutely identical.
3) Therefore, yes, you can overload operators on structs.