我不確定爲什麼這甚至在我看來,但如果我有一個上下文管理器兼容的類是另一個上下文管理器類的子類,如下所示。我已經展示了__exit__調用close()的「典型」模型。我的問題是:應該bar .__退出__()顯式調用super(bar,self).__ exit __(args)或者應該bar的close()調用foo的close或?這種情況下推薦的模式是什麼?應該從python中的子類調用__exit__超類方法
class foo(object):
def __enter__(self):
pass
def __exit__(self,*exc_info):
self.close()
return False
def close(self):
pass
class bar(foo):
def __enter__(self):
pass
def __exit__(self,*exc_info):
self.close()
return False
def close(self):
super(bar,self).close() # is this the recommend model?
謝謝。
你想讓超類的行爲生效嗎?這取決於您是要替換還是擴展超類的行爲。 – BrenBarn