python学习之类与对象的继承
类的继承
继承的用法:
class 类名(父类):
没有继承前,我们如果想用另一个类里面的大多数功能或者全部功能,我们只能去手动复制另一个类中的需要用到的代码,然后粘贴到本类中,这就失去了代码的特性复用性,所以出现了继承的概念
继承就是:把父类的功能和属性继承下来,然后子类就拥有了和父类一样的功能,父类中的所有属性和方法都可以被子类调用,而且子类还可以拥有属于它自己的独特的方法
比如:手机类有打电话,发短信,看视频,听音乐等功能,但是这些功能还不满足需求,现在想要创建一个华为手机类,它既有打电话,发短信,看视频,听音乐等功能,还有5G的功能,此时就可以用继承
首先把手机类中的所有方法都继承下来,然后在创建自己独特的方法
案例:
手机类:
class Phone:
”’
这是一个手机类
主要功能有,打电话,发短信,看电视,听音乐
主要属性有,华为,3000,土豪金,android
”’
#通过初始化函数__init__把属性进行初始化
def __init__(self,brand_name,price,color,os):#可以给初始化参数进行默认值
self.brand_name =brand_name
self.price=price
self.color= color#把参数赋值给对象,只能用对象调用
Phone.os = os#把参数赋值给类,既可以用类调用也可以用对象调用
#功能,定义了几个方法
def call(self,name):
print(‘我的功能是打电话,我给{}打电话’.format(name))
@staticmethod
def massage(*arge):
print(‘我的功能是用来发短信的,我的短信内容是{}’.format(arge))
@classmethod
def watchTV(cls):#类方法,在类方法中调用对象方法,需要类名().方法名(),调用静态方法直接类名.方法名()
print(‘我的功能是看电视的’)
return ‘我的功能是看电视的’
@classmethod
def music(self,music_name=’天堂’):
print(‘我的功能是用来听音乐的,我听的歌曲是{}’.format(music_name))
def calss_info(self):#对象方法
print(‘我的手机是{}手机,颜色是{},是{}系统,价格是{}元’.format(self.brand_name,self.color,self.os,self.price))
#调用类
#p=Phone(‘华为’,3500,’土豪金’,’android’)# 调用类需要在类的后面加一个括号
#p=Phone()
#p.call(‘张三’)
#p.calss_info()
if __name__ == ‘__main__’:
Phone.massage(‘今天周末明天又要上班’)
Phone.watchTV()
创建一个华为手机类
import calss_init
#创建华为类,让它继承手机类
class HuaWei(calss_init.Phone):
#华为手机支持5G
def G5(self):
w =self.watchTV()
print(‘我可以用5g了,{0},我可以用5g看电视’.format(w))
#因为父类中有初始化函数,所以继承后创建对象时就需要给初始化参数赋值
h=HuaWei(‘华为’,5000,’蓝色’,’android’)
#调用父类里面的call方法
h.call(‘张三’)
h.G5()
继承相关的拓展和重写
拓展:就是父类没有的方法,子类独有的方法
重写:就是父类已有的方法,在子类中重新定义新的功能,方法名相同,功能不同
#导入手机类
import calss_init
#创建华为类,让它继承手机类
class HuaWei(calss_init.Phone):
#华为手机支持5G
def G5(self):#这个方法就是拓展出来的方法,是父类中不存在的
w =self.watchTV()
print(‘我可以用5g了,{0},我可以用5g看电视’.format(w))
def music(self):#这个方法在父类中存在 这里重新写了不同的功能
print(‘我是一个新的方法,我可以下载歌曲’)
#因为父类中有初始化函数,所以继承后创建对象时就需要给初始化参数赋值
h=HuaWei(‘华为’,5000,’蓝色’,’android’)
#调用父类里面的call方法
h.call(‘张三’)
h.G5()
h.music()#此时的music的功能是子类的重新后的功能,和父类没关系
评论前必须登录!
注册