1

我想dict在 Python 中重写该类的一个方法,一个简单的方法:update. 假设我想创建一个MyDict与标准相同的类,dict除了它可以用dict必须包含至少 10 个元素的 s 进行更新。

所以我会继续:

def update(self, newdict):
    if len(newdict) <= 10: raise Exception
    self.update(newdict)

但是在对 的内部调用中update,显然 Python 调用的是被覆盖的函数而不是原来的函数。除了简单地更改函数名称之外,有没有办法避免这种情况?

4

2 回答 2

4

您需要调用update超类,将子类的实例作为self.

def update(self, newdict):
    if len(newdict) <= 10: raise Exception
    dict.update(self, newdict)

您还可以使用super()在运行时确定超类:

def update(self, newdict):
    if len(newdict) <= 10: raise Exception
    super(MyDict, self).update(newdict)

在 Python 3 中,您可以省略以下参数super()

def update(self, newdict):
    if len(newdict) <= 10: raise Exception
    super().update(newdict)
于 2013-01-07T16:00:22.177 回答
0

你是从dict类继承的吗?使用超级功能

super(MyDict, self).update

应该做的伎俩

于 2013-01-07T16:01:28.057 回答