【Python】类属性、方法和继承的应用

来自CAU李光军《Python语言程序设计》的课后练习

作为一个科班生,上这门公选课实在是有点说不过去hh

但由于我只是一个python究极小白,所以也没有什么不对劲orz

(欢迎各位大佬对代码批评指正)

更新此贴:仅作为复习总结使用,同校的朋友可以参考(不过不建议照搬啊hh)

 PS:本周的作业老师给题目的时候直接给了答案...??,那么我就不客气了~

【任务练习】设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。

【任务验证一】:创建一个包含实例属性的汽车类

汽车通常包括车型( rank)、颜色(color)、品牌(brand)、行驶里程(mileage)等属性,还可以包括设置和获取行驶里程的方法。

本任务要求:编写一个汽车类,该类包括上述属性(要求为实例属性)和方法,然后实现以下功能:

(1)创建两个汽车类的实例,分别输出它们的属性。

(2)调用汽车类的方法设置行驶里程,再读取最终的行驶里程输出。

class Car():

    '''汽车类'''

    def __init__(self,rank = '小型车',color = 'white',brand = '比亚迪'):

        self.rank = rank  # 车型

        self.color = color # 颜色

        self.brand =  brand # 品牌

        self.mileage = 10  # 行驶里程(单位:千米)

    def get_mileage(self):

        print('行驶里程为',self.mileage,'千米。')

      

    def set_mileage(self,value):

        self.mileage += value

      

if __name__ == '__main__':

    print('='*5,'第一个实例','='*5)

    car = Car()

    print('车型:',car.rank)  # 输出属性

    print('颜色:',car.color)  # 输出属性

    print('品牌:',car.brand)  # 输出属性

    # 调用方法

    car.get_mileage()     # 输出原行驶里程

    car.set_mileage(5.6)  # 行驶里程增加5.6千米

    print('更改行驶里程……')

    car.get_mileage()     # 输出新行驶里程

    print('='*5,'第二个实例','='*5)

    car = Car('SUV','黑色','丰田')

    print('车型:',car.rank)  # 输出属性

    print('颜色:',car.color)  # 输出属性

    print('品牌:',car.brand)  # 输出属性

    # 调用方法

    car.get_mileage()     # 输出原行驶里程

    car.set_mileage(10)  # 行驶里程增加10千米

    print('更改行驶里程……')

    car.get_mileage()     # 输出新行驶里程

运行结果:

===== 第一个实例 =====

车型: 小型车

颜色: white

品牌: 比亚迪

行驶里程为 10 千米。

更改行驶里程……

行驶里程为 15.6 千米。

===== 第二个实例 =====

车型: SUV

颜色: 黑色

品牌: 丰田

行驶里程为 10 千米。

更改行驶里程……

行驶里程为 20 千米。

【任务验证二】:创建一个包含类属性的汽车类

修改“任务一”完成的实例,将其中的实例属性修改为类属性。

实现效果:

class Car():

    '''汽车类'''

    rank = '小型车'  # 车型

    color = 'white' # 颜色

    brand = '比亚迪' # 品牌

    mileage = 10  # 行驶里程(单位:千米)

    def __init__(self,rank = '小型车',color = 'white',brand = '比亚迪'):

        Car.rank = rank  # 车型

        Car.color = color # 颜色

        Car.brand =  brand # 品牌

      

    def get_mileage(self):

        print('行驶里程为',Car.mileage,'千米。')

      

    def set_mileage(self,value):

        Car.mileage += value

      

if __name__ == '__main__':

    print('='*5,'第一个实例','='*5)

    car = Car()

    print('车型:',car.rank)  # 输出属性

    print('颜色:',car.color)  # 输出属性

    print('品牌:',car.brand)  # 输出属性

    # 调用方法

    car.get_mileage()     # 输出原行驶里程

    car.set_mileage(5.6)  # 行驶里程增加5.6千米

    print('更改行驶里程……')

    car.get_mileage()     # 输出新行驶里程

    print('='*5,'第二个实例','='*5)

    car = Car('SUV','黑色','丰田')

    print('车型:',car.rank)  # 输出属性

    print('颜色:',car.color)  # 输出属性

    print('品牌:',car.brand)  # 输出属性

    # 调用方法

    car.get_mileage()     # 输出原行驶里程

    car.set_mileage(10)  # 行驶里程增加10千米

    print('更改行驶里程……')

    car.get_mileage()     # 输出新行驶里程

运行结果:

===== 第一个实例 =====

车型: 小型车

颜色: white

品牌: 比亚迪

行驶里程为 10 千米。

更改行驶里程……

行驶里程为 15.6 千米。

===== 第二个实例 =====

车型: SUV

颜色: 黑色

品牌: 丰田

行驶里程为 15.6 千米。

更改行驶里程……

行驶里程为 25.6 千米。

【任务验证三】:创建人基类及其派生类

本任务要求:创建人( Person)类,再创建两个派生类。要求如下:

(1)在人基类中,包括类属性name(记录姓名)和方法work(输出现在所做的工作)。

(2)创建一个派生类Student,在该类的__init__ ()方法中输出“我是学生”,并且重写work()方法,输出所做的工作。

(3)创建第二个派生类Teacher,在该类的__init__ ()方法中输出“我是老师”,并且改变类属性name的值,然后再重写work()方法,输出所做的工作。

(4)分别创建派生类的实例,然后调用各自的work()方法,并且输出类属性的值。

class Person:

    '''人类(基类)'''

    name = '匿名'    # 姓名

    def work(self):

        print('我在工作中……')

class Student(Person):           # 定义学生类(派生类)

    def __init__(self):

        print('我是学生')

    def work(self):

        print('我在学习中……')

class Teacher(Person):           # 定义老师类(派生类)

    def __init__(self):

        print('\n我是老师')

        Person.name = '无语'

   

student = Student()    # 创建类的实例(学生)

print(student.name)

student.work()  # 调用派生类的work()方法

teacher = Teacher()    # 创建类的实例(老师)

teacher.work()  # 调用基类的work()方法

print(teacher.name)  # 输出基类的类属性的值

运行结果:

我是学生

匿名

我在学习中……

我是老师

我在工作中……

无语


下面就是我自己写的啦,四个题目就以1~4命名好了orz,和老师的代码其实也没什么特别大的不同诶,有其他想法的同学可以互相交流!

题目1:

class Box:

    def __init__(self,length,width,height):

        self.a=length

        self.b=width

        self.c=height

    def Vbox(self):

        V=self.a*self.b*self.c

        return V

    def Sbox(self):

        S=2*(self.a*self.b+self.b*self.c+self.a*self.c)

        return S



mybox=Box(3,2,1)

print(mybox.Vbox())

print(mybox.Sbox())

题目2:

class Car:

    def __init__(self,rank = '小型车',color = 'white',brand = '比亚迪'):

        self.rank=rank

        self.color=color

        self.brand=brand

        self.mileage=10

    def setmileage(self,mileage):

        self.mileage = mileage

    def getmileage(self):

        print('行驶里程为',self.mileage,'千米。')



print('='*5,'第一个实例','='*5)

mycar=Car()

print("车型:",mycar.rank)

print('颜色:',mycar.color)

print('品牌:',mycar.brand)



mycar.getmileage()

mycar.setmileage(5.6)

mycar.getmileage()



print('='*5,'第二个实例','='*5)

car=Car("SUV","黑色","丰田")

print('车型:',car.rank)

print('颜色:', car.color)

print('品牌:',car.brand)



car.getmileage()

car.setmileage(10)

print('更改行驶里程……')

car.getmileage()

题目3:

class Car():

    rank = '小型车'

    color = 'white'

    brand = '比亚迪'

    mileage = 10

    def __init__(self, rank='小型车', color='white', brand='比亚迪'):

        Car.rank = rank

        Car.color = color

        Car.brand = brand

    def get_mileage(self):

        print('行驶里程为', Car.mileage, '千米。')

    def set_mileage(self, value):

        Car.mileage += value



if __name__ == '__main__':

    print('=' * 5, '第一个实例', '=' * 5)

    car = Car()

    print('车型:', car.rank)

    print('颜色:', car.color)

    print('品牌:', car.brand)

    car.get_mileage()

    car.set_mileage(5.6)

    print('更改行驶里程……')

    car.get_mileage() 

    print('=' * 5, '第二个实例', '=' * 5)

    car = Car('SUV', '黑色', '丰田')

    print('车型:', car.rank)

    print('颜色:', car.color)

    print('品牌:', car.brand)

    car.get_mileage()

    car.set_mileage(10)

    print('更改行驶里程……')

    car.get_mileage()

题目4:

class Person:

    name = 'CAUer'

    def work(self):

        print('我在工作中……')



class Student(Person):

    def __init__(self):

        print('我是学生')

    def work(self):

        print('我在摸鱼中……')



class Teacher(Person):

    def __init__(self):

        print('我是老师')

        Person.name = '李光军'



student = Student()

print(student.name)

student.work()

teacher = Teacher()

teacher.work()

print(teacher.name)

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MorleyOlsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值