继承
面向对象编程中,类的继承是一个很重要的概念。
类(子类)可以继承另一个类(父类),子类就 继承 父类的 非私有 属性 和 非私有 方法
类比
王健林拥有财富、产业、权利、职务等,王思聪作为继承人,可以拥有王健林的财富、产业
继承的好处 vs 不继承的缺点
例子
定义 Wjl 父类
class Wjl:
def __init__(self):
self.money = 100
print("Wjl的__init__()方法")
def touZi(self,name,money):
# print("投资",name,money,'亿,收益:', money * 2, '亿')
print(f"投资{name},{money}亿,收益{money*2}亿")
# 资产 + 投资收益
self.money += money * 2
使用:
wjl = Wjl()
print("王健林的资产:", wjl.money,"亿")
wjl.touZi('净月小区', 10)
print("王健林的资产:", wjl.money,"亿")
子类继承父类的格式
python中子类继承父类,代码格式如下:
class 子类类名(父类类名):
pass
定义 Wsc 子类
class Wsc (Wjl):
pass
使用:
wsc = Wsc()
print("王思聪的资产:",wsc.money,"亿") #子类继承父类的属性
wsc.touZi("三只羊文化传媒智商有限公司", 30) # 子类可以继承父类的方法
print("王思聪的资产:",wsc.money,"亿")
总结
如果子类没有定义
__init__()方法,创建子类对象,自动调用父类的__init__()方法,初始化属性继承最大的好处:代码重用(重复使用),就是子类拥有父类的
非私有属性和非私有方法。子类WangSiCong什么也没做,就拥有父类的属性和方法
扩展父类的方法
在 Wsc 类中增加 buy() 方法,可以各种买买买
class Wsc (Wjl):
def buy(self,name,money):
# 扩展父类的方法
print(f"花{money}亿买{name}")
self.money = self.money - money
调用:
wsc = Wsc()
print("王思聪的资产:",wsc.money,"亿") #子类继承父类的属性
wsc.touZi("三只羊文化传媒智商有限公司", 30) # 子类可以继承父类的方法
print("王思聪的资产:",wsc.money,"亿")
wsc.buy("大游艇", 5)
print("王思聪的资产:",wsc.money,"亿")
扩展父类的属性
子类 Wsc 增加 __init__() 构造方法,定义属性 gf,如下:
class Wsc (Wjl):
def __init__(self, gf):
self.gf = gf
print("Wsc的__init__()方法")
def buy(self,name,money):
# 扩展父类的方法
print(f"花{money}亿买{name}")
self.money = self.money - money
创建对象 报错:
wsc = Wsc('网红1号')
错误如下:
解决
在子类 Wsc 的 __init__() 方法中,调用父类的 __init__() 方法
def __init__(self, gf):
# Wjl.__init__() 或者下行代码
super().__init__()
self.gf = gf
print("Wsc的__init__()方法")


