百度飞桨领航团零基础Python速成营第五天

百度飞桨领航团零基础Python速成营第五天

【飞桨】、【百度领航团】、【零基础Python】
https://aistudio.baidu.com/aistudio/course/introduce/7073


文章目录

  • 百度飞桨领航团零基础Python速成营第五天
  • 子类
    • 方法重写
  • 多继承
  • 总结


子类

定义:

class 子类名(父类名):

情况1,如果子类有新增的属性,那么需要在子类__init方法中,调用父类的__init__

情况2,如果子类没有新增的属性,子类不需要写__init__方法

使用:
对象名 = 子类名(参数)

继承的好处:代码重用,升级功能(重写),新增功能(新的方法)

#定义橄榄球运送员类
class Rugby(Athlete):
    def __init__(self,a_name,a_bod,a_squat,a_times):
        #调用父类__init__
        Athlete.__init__(self,a_name,a_bod,a_times)
        #深蹲次数
        self.squat = a_squat
    # 继承后下面两个函数就在Rugby类中,只是看不到而已
    # def top3(self):
    #     return sorted(set([self.sanitize(t) for t in self.times]))[0:3]
    # def sanitize(self,time_string):
    #     if '-' in time_string:
    #         splitter = '-'
    #     elif ':' in time_string:
    #         splitter = ':'
    #     else:
    #         return (time_string)
    #     (mins,secs) = time_string.split(splitter)
    #     return (mins+'.'+secs)

方法重写

子类方法与父类方法完全相同,子类若重写了父类的方法,则子类对象调用方法时就是调用的自己类中重新的方法。

class OtherAthlete(Athlete):
    def __init__(self,a_name,a_bod,a_squat,a_times):

        Athlete.__init__(self,a_name,a_bod,a_times)

        self.squat = a_squat
    def top3(self):
        return sorted([self.sanitize(t) for t in self.times])[0:3]

多继承

class Father(): 
    def talk(self):
        print("---爸爸的表达能力---")

class Mather():
    def smart(self):
        print("---妈妈聪明的头脑---")

class Child(Father,Mather):
    pass

child1 = Child()
child1.talk()
child1.smart()

#---爸爸的表达能力---
#---妈妈聪明的头脑---

多个父类有相同的属性或方法名,这种情况应该避免,会调用第一个父类方法。


总结

第五天内容基本如上。

你可能感兴趣的:(Python,python,类,面向对象编程)