python基础之初识类与对象

2019-09-29  本文已影响0人  DayBreakL

python 类与对象

python继承

面向对象语言的一个特点就是继承。
继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

继承
# 继承
class RobotOne: #第一代机器人
    def __init__(self,year,name):
        self.year=year
        self.name=name

    def walking(self):
        print("只能在平地行走,遇到障碍物会摔倒 ")

    def robot_info(self):
        print("{0}年产生的机器人{1},是中国自主研发的".format(self.year,self.name))

class RobotTwo(RobotOne): #第二代机器人,继承于第一代机器人
    def walking(self): #重写
        print("平地上平稳行走")

    def avoid(self):  #拓展
        self.robot_info()  #在子类的函数中调用父类的函数
        print("可以避开障碍物")

r1=RobotOne(2018,"哈利路亚") 
r1.robot_info() #2018年产生的机器人哈利路亚,是中国自主研发的
r1.walking() #只能在平地行走,遇到障碍物会摔倒 
r2=RobotTwo(2019,"CHINA") 
r2.robot_info() #2019年产生的机器人CHINA,是中国自主研发的
r2.walking() #平地上平稳行走
r2.avoid() #2019年产生的机器人CHINA,是中国自主研发的
           #可以避开障碍物

说明:

多继承

实际应用较少,但是面试经常会问,作为了解

class RobotOne:  # 第一代机器人
    def __init__(self, year, name):
        self.year = year
        self.name = name

    def walking(self):
        print("只能在平地行走,遇到障碍物会摔倒 ")

    def robot_info(self):
        print("{0}年产生的机器人{1},是中国自主研发的".format(self.year, self.name))

class RobotTwo():  # 第二代机器人,不继承于第一代
    def __init__(self, name):
        self.name = name

    def walking(self):
        print("平地上平稳行走")


class RobotThree(RobotOne, RobotTwo):  # 第三代机器人,继承于第一代机器人和第二代机器人
    def jumping(self):
        print(self.name + "可以单脚跳跃了")

class RobotFour(RobotTwo,RobotOne):  # 第四代机器人,继承于第一代机器人和第二代机器人
    def running(self):
        print(self.name + "可以跑了")

r3 = RobotThree(2020, "Super") #RobotOne是第一个爸爸,所以参数按RobotOne
r3.jumping() 
r3.walking() #两个父类有同名函数,就近原则,输出:只能在平地行走,遇到障碍物会摔倒 
r4=RobotFour("Happy") #RobotTwo是第一个爸爸,所以参数按RobotTwo
r4.running() 
r4.walking() #平地上平稳行走

说明

超继承
class MathMethod:
    def __init__(self,a,b):
        self.a=a
        self.b=b

    def add(self):
        return (self.a+self.b)

    def reduce(self):
        return(self.a-self.b)

class MathMethod_1(MathMethod):
    def division(self): #拓展
        return(self.a/self.b)

    def add(self): #重写
        return ("这是重写加法")

    def reduce(self):
        super(MathMethod_1,self).reduce() #超继承,父类的方法
        return (self.a-self.b-10) #在父类的方法上加上代码

MathMethod_1(5,6).reduce()

super() 函数是用于调用父类(超类)的一个方法

super(MathMethod_1,self).add(),其中super(子类名,self)通过子类名找到父类,再调用父类的add方法

作业

按照要求定义一个游乐园门票类,并创建实例调用函数:

1.完成对儿童和大人的总票价统计

2.平日价100元,周末价为平日价的120%

3.儿童半价
class TicketTatal:

    def __init__(self,children,adult,dayType):
        #孩子人数
        self.children=children
        #成年人数
        self.adult=adult
        #天类型 workday weekend
        self.dayType=dayType

    def business(self):
        if self.dayType=="workday":
            tatal=self.adult*100+self.children*100*0.5
        else:
            tatal=self.adult*120+self.children*120*0.5
        return tatal

d1=TicketTatal(10,50,"weekend")
print(d1.business())

d2=TicketTatal(10,50,"workday")
print(d2.business())

上一篇 下一篇

猜你喜欢

热点阅读