如果我对这里显而易见的事情一无所知,请原谅我,但是如果你在变量中保存对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
Run Code Online (Sandbox Code Playgroud)
当我实现这个CaselessDict类时几乎每个方法都有超级的东西.
预期的事情发生了:self.super只会持有一个super行为类似于 的对象super(CaselessDict, self)。
这种方法的问题在于每个实例只有一个super属性,因此如果您有更多的类使用这种技术,则只有分配给super最后一个的类才能正常运行。哎哟! 因此,这样做通常不是一个好主意。您可以命名该属性__super,这样它就会被破坏,但我建议super(CaselessDict, self)像其他人一样调用 。
当然,Python 3 中的草更绿,简单的super()调用就足够了。
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |