我看过这样的帖子:
但不知怎的,我感到困惑.许多混淆如:
何时以及为什么我必须做以下事情?
# Refer link1
return super(MyType, cls).__new__(cls, name, bases, newattrs)
Run Code Online (Sandbox Code Playgroud)
要么
# Refer link2
return super(MetaSingleton, cls).__call__(*args, **kw)
Run Code Online (Sandbox Code Playgroud)
要么
# Refer link2
return type(self.__name__ + other.__name__, (self, other), {})
Run Code Online (Sandbox Code Playgroud)
超级工作怎么样?
什么是link1中的类注册表和unregistry以及它究竟是如何工作的?(我认为它与单身人士有关.我可能是错的,来自C背景.我的编码风格仍然是功能和OO的混合).
类实例化(子类,元类,超类型)和方法调用的流程是什么(
metaclass->__new__, metaclass->__init__, super->__new__, subclass->__init__ inherited from metaclass
Run Code Online (Sandbox Code Playgroud)
)具有良好评论的工作代码(虽然第一个链接非常接近,但它没有谈论cls关键字和超级(..)和注册表).优选地,具有多重继承的示例.
PS:我把最后一部分作为代码,因为Stack Overflow格式化将文本转换metaclass->__new__
为元类 - > 新