相关疑难解决方法(0)

"MetaClass","__ new__","cls"和"super" - 究竟是什么机制?

我看过这样的帖子:

  1. 什么是Python中的元类?
  2. Python中元类的(具体)用例是什么?
  3. Python的超级很漂亮,但是你无法使用它

但不知怎的,我感到困惑.许多混淆如:

何时以及为什么我必须做以下事情?

# 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__ 为元类 - > 新

python types metaclass super

28
推荐指数
2
解决办法
2万
查看次数

标签 统计

metaclass ×1

python ×1

super ×1

types ×1