Python3 - 在被覆盖的方法中使用 `super` 是如何工作的(更多内容在 body 中)
Python3 - How does using `super` inside a method being overridden works (more in body)
有如下所示的class结构:
class RegressionResults(LikelihoodModelResults):
...
...
def conf_int(self, alpha=.05, cols=None):
ci = super(RegressionResults, self).conf_int(alpha=alpha, cols=cols)
return ci
这里是 LikelihoodModelResults
:
class LikelihoodModelResults(Results):
...
...
def conf_int(self, alpha=.05, cols=None):
...
...
并且 class Results
没有名为 conf_int
的方法。
鉴于 classes 的这种结构和继承,我想知道在 RegressionResults
的实例上调用 conf_int
时会发生什么。 LikelihoodModelResults
的 conf_int
里面的代码会是 运行 吗?如果是,为什么还要尝试覆盖它?
对不起,如果我对问题的标题含糊不清,如果你有更好的标题,你可以自由编辑它。以上 classes 的来源是 RegressionResults
, LikelihoodModelResults
.
就代码而言,被覆盖的方法没有做任何额外的事情,所以你是对的,覆盖似乎是多余的。但是,在原始来源中,它有一个很大的文档字符串,然后在方法主体中有这个注释:
# keep method for docstring for now
所以我假设覆盖是出于文档目的而不是机械目的。
有如下所示的class结构:
class RegressionResults(LikelihoodModelResults):
...
...
def conf_int(self, alpha=.05, cols=None):
ci = super(RegressionResults, self).conf_int(alpha=alpha, cols=cols)
return ci
这里是 LikelihoodModelResults
:
class LikelihoodModelResults(Results):
...
...
def conf_int(self, alpha=.05, cols=None):
...
...
并且 class Results
没有名为 conf_int
的方法。
鉴于 classes 的这种结构和继承,我想知道在 RegressionResults
的实例上调用 conf_int
时会发生什么。 LikelihoodModelResults
的 conf_int
里面的代码会是 运行 吗?如果是,为什么还要尝试覆盖它?
对不起,如果我对问题的标题含糊不清,如果你有更好的标题,你可以自由编辑它。以上 classes 的来源是 RegressionResults
, LikelihoodModelResults
.
就代码而言,被覆盖的方法没有做任何额外的事情,所以你是对的,覆盖似乎是多余的。但是,在原始来源中,它有一个很大的文档字符串,然后在方法主体中有这个注释:
# keep method for docstring for now
所以我假设覆盖是出于文档目的而不是机械目的。