The __new__ in any class is used to create instances of that class. So:
class Buffer: def __new__(cls, size): instance = object.__new__(cls) instance.storage = bytearray(size) return instance
and in the REPL:
>>>> buffer = Buffer(32) >>> buffer <__main__.Buffer object at 0x7fb146867a60> >>> type(buffer) <class '__main__.Buffer'>
So if Buffer.__new__ is used to create an instance of Buffer, what is Buffer itself an instance of?
>>> type(Buffer) <class 'type'>
Okay, Buffer is an instance of type -- so, just like Buffer.__new__ is used to create an instance of Buffer, type.__new__ is used to create an instance of type, which Buffer is.
Turning this back to Enum and EnumMeta: EnumMeta.__new__ is used to create instances of itself, which are Enum classes, and Enum.__new__ is used to create Enum instances, which are its members.
Part of the magic of Enum, and probably also part of the confusion, is that the members are instances of the class, even though they are listed in the body of the Enum class (usually such things are just attributes, like the storage used above in Buffer).