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
。
我想请教以下代码片段:
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
。