在 Python 中,如果一个子类要覆盖父类的方法,但又想保留父类方法的原有功能,可以使用 super()
函数。super()
函数返回一个代理对象,可以用来调用父类的方法。下面是一个例子,演示了如何使用 super()
函数:
class Shape:
def __init__(self, x, y):
self.x = x
self.y = y
def area(self):
pass
class Circle(Shape):
def __init__(self, x, y, r):
super().__init__(x, y)
self.r = r
def area(self):
return 3.14 * self.r ** 2
class Square(Shape):
def __init__(self, x, y, l):
super().__init__(x, y)
self.l = l
def area(self):
return self.l ** 2
class Rectangle(Shape):
def __init__(self, x, y, w, h):
super().__init__(x, y)
self.w = w
self.h = h
def area(self):
return self.w * self.h
# 创建一个 Circle 对象
c = Circle(0, 0, 2)
# 创建一个 Square 对象
s = Square(0, 0, 2)
# 创建一个 Rectangle 对象
r = Rectangle(0, 0, 2, 3)
# 调用各个对象的 area() 方法
print(c.area())
print(s.area())
print(r.area())
在上面的代码中,我们定义了一个 Shape
类和三个子类 Circle
、Square
和 Rectangle
,分别表示圆形、正方形和矩形。在每个子类的构造函数中,我们使用 super()
函数调用了父类的构造函数,以便正确地初始化父类的属性。在每个子类中,我们重写了父类的 area()
方法,并实现了各自特有的计算面积的逻辑。在创建 Circle
、Square
和 Rectangle
对象后,我们分别调用它们的 area()
方法,看看输出结果。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。