Personally, I would do any string parsing before passing the values to the constructor, unless parsing is one (or the) explicitly stated responsibility of the class. I prefer my program to fail because I didn’t explicitly cast a value than to be too flexible and end up in a Javascript-like 0 == "0" situation. That said, if you want to accept strings as parameters you can just call int(my_parameter) or float(my_parameter) as needed in the constructor and that will make sure this are numbers not matter you pass a number, a string or even a Boolean.
In case you want to know more about type safety in Python, you can take a look at type annotations, which are supported by type checkers like mypy, and the traits package for type safety in class attributes.