But this assumes that your code can know what the user^W programmer (inserted later ... sorry) really wanted, which is a dangerous assumption. Why would I call new on an instance in the first place? Maybe it's a typo (I wanted the net method perhaps)? Maybe I really don't grok OO? Silently catching errors that arise at runtime through erroneous user input or network hiccups, etc. is one thing, silently catching a programmer's conceptual or didn't-read-the -API mistakes and correcting them is quite another.
It is your code though. But if you're ever going to distribute OO modules, I think it would be wise to warn (warn =) the user à la "new called on instance, a copy was created (did you mean to use clone) ?"
I mistrust all systematizers and avoid them. The will to a system shows a lack of integrity -- F. Nietzsche