def self.new(url)
return url if url.is_a?(MyURL)
myurl = allocate
myurl.instance_eval { initialize(url) }
myurl
end

is_a? の部分は respond_to? MyURL固有のメソッド とかの方がいいかも