Maybe I'm missing something, but why doesn't the following raise errors: class X(object): __metaclass__ = type X() X(1) X(1, 2, 3, a="x", b="y") I would have expected 'this constructor takes no arguments' errors on the last two lines. Or is this expected behaviour? Thomas