在Python中,Method OverWrite和OverRide有什么区别?

时间:2015-05-19 15:32:34

标签: python

在Python中使用Method OverWrite和OverRide有什么区别?

我在覆盖和覆盖的概念上有点混乱。假设我有一个班级

class shape(object):
    def area(self):
        print 'Method called from shape'

class rect(shape):

    def __init__(self, h, w):
        self.h = h
        self.w = w

    def area(self, h, w):
        super(rect, self).area()
        return h + w

如果我在rect的area方法中调用super方法,则称为overriding 如果我不打电话给超级,那就是覆盖(因为它正在取代)

无论我理解什么都是正确的?

1 个答案:

答案 0 :(得分:0)

我没有听说过覆盖这个词。通常会混淆的两个术语是重载和覆盖,但对于其他语言! Python没有重载的概念

Overriding正在用子类中的实现替换父类方法。

在C#或Java等其他结构化语言中重载正在创建一个具有相同名称但具有不同参数签名的方法。

你可以创建两个名为get_area的不同方法:

public get_area(self, width, height){
  ...
}
public get_area(self, rectangle){
  ...
}

这是一个重载的例子。你在问题中的例子是重写。 note 重载在python中的工作方式与在其他语言中的工作方式不同!在类中定义的相同方法的两个定义将不可调用。只有具有给定名称的方法的最后一个实现才是可调用的。在上面的例子中,如果用Python编写,只有get_area(self,rectangle)可以调用。