请原谅我对这里显而易见的内容一无所知,但是如果您将对 super 的调用保存在变量中并稍后使用它会发生什么。
这是类定义的一部分,向您展示我的意思。
class CaselessDict(dict):
def __init__(self, *args, **kwargs):
self.super = super(CaselessDict, self) # save super
self.update(*args, **kwargs)
def __getitem__(self, key):
key = self.parsekey(key)
return self.super.__getitem__(key) # use saved super
这是在我实现这个 CaselessDict 类时出现的,几乎每个方法中都有 super。
最佳答案
预期的事情发生了:self.super
将只持有一个 super
对象,它的行为就像 super(CaselessDict, self)
。
这种方法的问题是每个实例只有一个 super
属性,所以如果你有更多的类会使用这种技术,只有分配给 super
最后会正常运行。哎哟!所以,这样做通常不是一个好主意。您可以将属性命名为__super
,这样它就会被破坏,但我建议像其他人一样调用super(CaselessDict, self)
。
当然,在 Python 3 中喜新厌旧,一个简单的 super()
调用就足够了。
关于python - 如果将对 super 的调用保存在变量中以供将来使用,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703230/