Your timeit calls in the edit need the -s parameter before the first statements, so they aren't executed on each loop iteration. The overhead is in creating the class, not the instances.
$ python3 -mtimeit -s 's="%s %s %s"' 's % (1, 3, 9)'
1000000 loops, best of 3: 0.343 usec per loop
$ python3 -mtimeit -s 'class Spam:pass' 'Spam()'
10000000 loops, best of 3: 0.106 usec per loop