Python 入门 15 —— 类的重载

派生类继承基类时,会“复制”所有基类的所有公有成员和保护成员,但很多时候,并不是所有这些成员派生类都正好需要,为此,派生类通常需要屏蔽掉基类的一些成员。在派生类中屏蔽基类成员就被称作:重载。

一、重载类的成员

重载类的成员的具体方法就是,在派生类中重新定义一个与基类同名的成员,这样,在通过类名或对象名调用这一成员时,只有派生类中新定义的成员会被使用,与派生类中新定义的成员同名的基类中的成员不再起作用。例如:

class base09:
    x9 = 91; y9 = 92
    def fun(self): print("base09")

class sub08(base09):    # 重载基类成员 x9、y9、fun(self)
    x9 = 95; y9 = 96
    def fun(self): print("sub09")

# 通过类名访问
print(sub08.x9, sub08.y9)    # 经过重载,访问到的是派生类中新定义的成员:95 96
sub08.fun(0)    # sub09

# 通过对象名访问
obj08 = sub08()

print(obj08.x9, obj08.y9)    # 经过重载,访问到的是派生类中新定义的成员:95 96
obj08.fun()    # sub09

二、重载构造函数

派生类也可以通过定义新的构造函数来重载基类的构造函数。被重载的基类的构造函数,在创建对象后不再会被系统自动调用。例如:

class base10:
    def __init__(self): print('base10'); self.a = 1

class sub09(base10):
    v = 100
    def __init__(self): print('sub09', self.v); self.b = 2    # 重载构造函数

obj09 = sub09()    # 派生类中新定义的构造函数被调用:sub09 100
print(obj09.a)    # 被重载的基类构造函数中定义的成员不存在:AttributeError: 'sub09' object has no attribute 'a'
attribute 'a'
print(obj09.b)    # 2

———————————————— 本篇完 ————————————————

看完之后,麻烦您顺手点击下方 “点赞” 两个字给我点个赞吧 ^-^ , 谢谢您了。

如果您还能像我小学一年级班主任好老师那样,给我随心写上几句表扬或批评的话语,那真是感激不尽!

在我人生的道路上,有了您的鼓励和指导,我一定成长快快。

发布了28 篇原创文章 · 获赞 6 · 访问量 2273

猜你喜欢

转载自blog.csdn.net/Jeff888999/article/details/103992392
今日推荐