type.__call__ 如何知道其结果的类型?

How does type.__call__ know the type of its result?

我想请教以下代码片段:

class Meta(type):
    def __call__(self, *args):
        obj = super().__call__(*args)
        print('Meta specific __call__ actions')
        return obj

class Spam(metaclass=Meta):
    def __init__(self, *args):
        print('Spam.__init__(%r)' % args)

super().__call__(super() 在这里意味着 'type'?)如何知道它应该 创建 class 垃圾邮件的实例? __call__ 没有参数 会有所帮助。

Spam 是 Meta 的一个实例,因此 Spam() 应调用 Meta.__call__。我的推理到此为止。 Spam('foo') 应创建一个 垃圾邮件的实例。请解释如何在 Meta.__call__ 方法中执行此操作 获取信息。

Spam 是 Meta 的实例,此实例在 self 参数中传递给 Meta.__call__

super() 构造会将 self 的值传递给基本方法;所以 type.__call__ 将通过其 self 参数传递给 Spam