That was my first instinct as well, but there are two problems with that:
1) A class can only have one metaclass, if it inherits from one class that uses just `type` as it's metaclass AND tries to apply this metaclass, it will fail. Due to this, I only use metaclasses when they're the only thing that will work.
2) I'm not actually sure if I COULD do it with a metaclass. Without inheriting from `object`, I wouldn't have the base implementations of the methods I need.
I admit, it certainly feels like a problem for metaclasses to solve, but if you can do it WITHOUT using metaclasses (and making it REALLY verbose or difficult to use), you probably shouldn't.