Я пытаюсь понять метаклассы python, и поэтому прошел через образец кода. Насколько я понимаю, метакласс Python может быть любым вызываемым. Итак, я могу использовать свой метакласс как
def metacls(clsName, bases, atts):
....
return type(clsName, bases, atts)
Однако я видел, как многие люди пишут свои метаклассы следующим образом:
class Metacls(type):
def __new__(meta, clsName, bases, atts):
....
return type.__new__(meta, clsName, bases, atts)
Насколько я вижу, они оба будут делать то же самое. Есть ли причина использовать базовый класс? Это обычное дело?