Python 类继承方法覆盖

本文详细介绍了在面向对象编程中,子类如何通过覆盖父类方法来实现功能的定制与扩展,同时探讨了super()函数在调用父类方法中的作用与实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、覆盖的介绍

是指有继承关系的类中 ,子类中实现了与基类中同名的方法 , 在子类实例中调用该方法时 , 实际调用的是子类中的方法 ,这种现象称作覆盖 , 也就是实现与父类同名 ,但是功能不同的方法 ,可以改变父类方法的功能。

二、简单示例

# 定义子类MyList , 继承于list父类
class MyList(list):
    pass

# 实例化
L = MyList(range(1,10))
L.append(10)
print(L)

输出内容:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 定义子类继承于父类list , 并添加与父类相同方法名的append方法
class MyList(list):
    def append(self, n):
        print("子类方法覆盖了父类方法")

L = MyList(range(1,10))

# 此时调用后会执行子类中的方法
L.append(10)
print(L)

输出内容:
子类方法覆盖了父类方法
[1, 2, 3, 4, 5, 6, 7, 8, 9]

三、supser()函数示例

如果子类实例想要调用父类方法应该怎么做 ?
list.append(L,10)   # 可以显示调用 , 但是推荐super函数  super(MyList , L).append(10)
                      在方法内直接使用super()

class MyList(list):
    def append(self, n):
        print("子类方法覆盖了父类方法")
    def my_append(self,n):
        super().append(10)

L = MyList(range(1,10))
L.my_append(10)
print(L)

输出内容
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 如果在子类中实现了__init__方法后 , 子类实例调用的是子类中的初始化方法 , 如果此时想要调用父类中# 的初始化方法 , 需要使用super()

class MyList(list):
    def __init__(self , *args):
        pass

myl = MyList([1,2,3,4,5])
myl.append(6)
print(myl)

# 此时会输出 [6]


使用super
class MyList(list):
    def __init__(self , *args):
       super(MyList,self).__init__(*args)

myl = MyList([1,2,3,4,5])
myl.append(6)
print(myl)

输出 [1,2,3,4,5,6]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值