01封装
1、封装是面向对象编程的一大特点
2、面向对象编程的第一步---将 属性 和 方法 封装到一个抽象的类中
3、外界使用类创建对象,然后让对象调用方法
4、对象方法的细节都被封装在类的内部
02小明爱跑步
需求:
1、小明 体重 75.0公斤
2、小明每次跑步会减肥0.5公斤
3、小明每次吃东西体重增加1公斤
class Man: def __init__(self, name, weigh): self.name = name self.weigh = weigh def run(self): self.weigh -= 0.5 def eat(self): self.weigh += 1 def __str__(self): return "%s现在体重是%.2f" % (self.name, self.weigh) one = Man("小明", 75) one.eat() one.run() print(one)
2.1小明爱跑步扩展---小美也爱跑步
需求:
1、小明和小美都爱跑步
2、小明体重75.0公斤
3、小美体重45.0公斤
4、每次跑步都会减少0.5公斤
5、每次吃东西都会增加1公斤
class Man: def __init__(self, name, weigh): self.name = name self.weigh = weigh def run(self): self.weigh -= 0.5 def eat(self): self.weigh += 1 def __str__(self): return "%s现在体重是%.2f" % (self.name, self.weigh) one = Man("小明", 75) two = Man("小美", 45) one.eat() one.run() two.eat() two.run() print(one) print(two)
提示:
1、在对象的方法内部,是可以直接访问对象的属性的
2、同一个类创建的多个对象之间,属性互不干扰!
03摆放家具
需求:
1、房子(house)有户型、总面积 和 家具名称列表
新房子没有任何家具
2、 家具(Houseltem)有 名字 和 占地面积 ,其中
-席梦思(bed)占地4平米
-衣柜(chest)占地2平米
-餐桌(table)占地1.5平米
3、将以上三件家具添加到房子中
4、打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表
HouseItem name
size
__init__(self, name, size)
__str__(self)
House type
size
size_remain
item_list
__init__(self, type, size)
__str__(self)
add_item(self, item)
剩余面积
1、在创建房子对象时,定义一个剩余面积的属性,初始值和总面积相等
2、当调用add_item方法,向房间添加家具时,让剩余面积 -= 家具面积
先开发哪一个类?
1、家具类简单
2、房子要使用到家具,被使用的类,通常应该先开发
class House: def __init__(self, style, size): self.style = style self.size = size self.size_remain = size self.item_list = [] def __str__(self): return "我的房子是%s,总面积为%.2f,剩余面积为%.2f,现有家具%s" \ % (self.style, self.size, self.size_remain, self.item_list) def add_item(self, name): if self.size_remain > name.size: self.size_remain -= name.size self.item_list.append(name.name) print("%s添加成功!" % name.name) else: print("%s面积太大无法添加" % name.name) class HouseItem: def __init__(self, name, size): self.name = name self.size = size def __str__(self): return "[%s]占地%.2f" % (self.name, self.size) my_houseItem = HouseItem("席梦思", 5) my_houseItem2 = HouseItem("衣柜", 10) my_houseItem3 = HouseItem("餐桌", 115) my_house = House("两室一厅", 120) my_house.add_item(my_houseItem) my_house.add_item(my_houseItem2) my_house.add_item(my_houseItem3) print(my_house)