python中的封装及例题练习

时间: 2023-07-29 admin 互联网

python中的封装及例题练习

python中的封装及例题练习

关于封装

1.封装是面向对象编程的一大特点 2.面向对象编程的第一步 将属性和方法封装到一个抽象的类中(为什么说是抽象的,因为类不能直接使用) 3.外界使用类创建对象,然后让对象调用方法 4.对象方法的细节都被封装在类的内部

需求1:
1.小明和小美都爱跑步
2.小美体重45.0公斤
3.小明体重75.0公斤
4.每次跑步都会减少0.5公斤
5.每次吃东西都会增加1公斤

class Person:def __init__(self,name,weight):self.name = nameself.weight = weightdef __str__(self):return ('我的名字叫 %s 体重是 %.2f' %(self.name,self.weight))
## 在对象方法内部,可以直接访问对象的属性def run(self):print('%s 爱跑步' %(self.name))self.weight -= 0.5def eat(self):print('%s 吃东西' %(self.name))self.weight += 1xiaoming = Person('小明',75.0)
xiaoming.run()
xiaoming.eat()
#print(xiaoming.weight)
print(xiaoming)## 同一个类创建出多个对象之间,属性互不干扰的
xiaomei = Person('小美',45.0)
xiaomei.run()
xiaomei.eat()
print(xiaomei)
print(xiaoming)

需求2:摆放家具
需求:
1.房子有户型,总面积和家具名称列表
新房子没有任何的家具
2.家具有名字和战地面积,其中
床:占4平米
衣柜:占2平面
餐桌:占1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表

class person:def __init__(self,name,weight):self.name = nameself.weight = weightdef __str__(self):return '%s的体重是%.2f'%(self.name,self.weight)def run(self):print('%s爱跑步'%(self.name))self.weight = self.weight - 0.5def eat(self):print('%爱吃饭'%(self.name))self.weight = self.weight + 1
xiaomei = person('小美',45.0)class HouseItem:def __init__(self,name,area):self.name = nameself.area = areadef __str__(self):return '%s占地%.2f'%(self.name,self.area)
class House:def __init__(self,house_type,area):self.house_type = house_typeself.area = areaself.free_area = areaself.item_list = []def __str__(self):return ('户型:%s\n总面积:%.2f剩余:%.2f\n家具:%s'%(self.house_type,self.area,self.free_area,self.item_list))def add_item(self,item):if item.area > self.free_area:print('%s的面积太大了,无法添加'%(item.name))returnself.item_list.append(item.name)self.free_area -= item.area
bed = HouseItem('bed',400)
my_home = House('两室一厅',300)
print(bed)
my_home.add_item(bed)
print(my_home)