概述
一、小明爱跑步
需求:
1、小明体重 75公斤
2、小明每次跑步体重会减少0.5公斤
3、小明每次吃东西体重会增加1公斤
class Person:
def __init__(self, new_name, new_weight):
self.name = new_name
self.weight = new_weight
def run(self):
self.weight -= 0.5
def eat(self):
self.weight+= 1
def __str__(self):
return '我的名字是%s, 体重为%.2f公斤 ' % (self.name, self.weight)
xiaoming = Person('小明',75)
xiaoming.run()
xiaoming.eat()
print(xiaoming)
输出为:
我的名字是小明, 体重为75.50公斤
二、小明爱跑步扩展
需求:
1、小明和小华都爱跑步
2、小明体重75公斤
3、小华体重60公斤
4、每次吃东西体重都会增加1公斤
5、每次跑步体重都会减少0.5公斤
class Person:
def __init__(self, new_name, new_weight):
self.name = new_name
self.weight = new_weight
def __str__(self):
return '我的名字是%s, 体重为%.2f公斤' % (self.name, self.weight)
def run(self):
self.weight -= 0.5
def eat(self):
self.weight += 1
xiaoming = Person('小明', 75)
xiaohua = Person('小华', 60)
xiaoming.run()
print(xiaoming)
xiaohua.eat()
print(xiaohua)
输出为:
我的名字是小明, 体重为74.50公斤
我的名字是小华, 体重为61.00公斤
三、摆放家具
需求:
1、房子有户型(三室一厅),总面积(100平方米)和家具名称列表(新房子没有家具)
2、家具有名称,占地面积,其中,床占地4平方米,餐桌占地1.5平方米,柜子占地2平方米
3、将以上三个家具添加到房子中
4、打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表
class HouseItem:
def __init__(self, new_name, new_area):
self.name = new_name
self.area = new_area
def __str__(self):
return '%s 的占地面积为 %.2f' % (self.name, self.area)
class House:
def __init__(self, new_house_style, new_area):
self.house_style = new_house_style
self.area = new_area
self.free_area = new_area
self.item_list =[]
def add_item(self, item):
if item.area > self.area:
print("%s 太大了,不能添加到房子中!" % item)
return
self.item_list.append(item.name)
self.free_area -= item.area
def __str__(self):
return '户型:%s 总面积:%.2f 剩余面积:%.2f 添加的家具有:%s' % (self.house_style, self.area, self.free_area, self.item_list)
bed = HouseItem('床',4)
chest = HouseItem('衣柜', 2)
table = HouseItem('餐桌', 1.5)
house = House('三室一厅', 100)
house.add_item(bed)
house.add_item(chest)
house.add_item(table)
print(house)
输出为:
户型:三室一厅 总面积:100.00 剩余面积:92.50 添加的家具有:['床', '衣柜', '餐桌']
四、士兵突击
需求:
1、士兵小虎有一把AK-47
2、士兵可以开火
3、枪可以发射子弹
4、枪需要装填以增加子弹数量
# 先定义枪类
class Gun:
def __init__(self, new_name):
self.name = new_name
self.bullet_number = 0
def add_bullet(self, number):
self.bullet_number += number
def shoot(self):
if self.bullet_number <= 0:
print("没有子弹了,请装填子弹!")
return
else:
print("发射子弹!")
self.bullet_number -= 1
# 再定义士兵类
class Soldier:
def __init__(self, new_name):
self.name = new_name
self.soldier_gun = None
def fire(self):
if self.soldier_gun is None:
print("%s 还没有枪呢" % self.name)
return
print("冲! fire!")
#让枪装填子弹
self.soldier_gun.add_bullet(30)
self.soldier_gun.shoot()
AK_47 = Gun('AK-47')
xiaohu = Soldier('小虎')
xiaohu.soldier_gun = AK_47
xiaohu.fire()
输出为:
冲! fire!
发射子弹!
以上案例均参考自黑马程序员,本人还是python初学者,望各位大佬不喜勿喷,谢谢!
最后
以上就是活力书本为你收集整理的Python进阶与提高3--面向对象封装案例的全部内容,希望文章能够帮你解决Python进阶与提高3--面向对象封装案例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复