// In this case py::overload_cast operator has been used. The reason is that otherwise compiler can not know which method to use and thus produces the error.
// In Python method overloading does not exist in the same way like in c++ (there is no overloading resolution by the compiler obviously), thus we use py::overload_cast.
// Here, py::overload_cast only requires the parameter types to be specified. The return type and class are deduced