Python面向对象(封装)

目录

  • 面向对象封装案例
    • 小明爱跑步
    • 摆放家具
      • 需求
      • 创建家具类
      • 创建家具对象
      • 创建房子类
      • 创建房子对象
    • 完善添加家具方法

面向对象封装案例

属性方法 封装 到一个抽象的类中, 外界使用类创建对象, 然后让对象调用方法.

小明爱跑步

  • 需求
    • 小明体重75公斤
    • 小明每次跑步会减肥0.5公斤
    • 小明每次吃东西体重增加1共计
class Person():
    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def eat(self):
        print("%s吃东西" % self.name)
        self.weight += 1
        print("%s的体重为%d" % (self.name, self.weight))

    def run(self):
        print("%s跑步" % self.name)
        self.weight -= 1
        print("%s的体重为%d" % (self.name, self.weight))


p = Person("小明", 75)
p.eat()
p.run()

摆放家具

需求

  • 房子 有 户型, 总面积 和 家具名称列表
  • 家具有名字和占地面积, 其中
    • 席梦思(bed) 占地 4 平米
    • 衣柜(chest) 占地 2 平米
    • 餐桌(table) 占地 1.5 平米
  • 将以上三件家具添加到房子中
  • 打印房子时, 要求输出 : 户型, 总面积, 剩余面积, 家具名称列表

创建家具类

class HouseItem:
    def __init__(self, name, area):
        # 家具名称
        self.name = name
        # 占地面积
        self.area = area

    def __str__(self):
        return "[%s] 占地 %.2f" % (self.name, self.area)

创建家具对象

# 创建家具对象
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("桌子", 1.5)

创建房子类

class House:
    def __init__(self, house_type, area):
        # 户型
        self.house_type = house_type
        # 面积
        self.area = area
        # 剩余面积
        self.free_area = area
        # 家具列表
        self.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):
        print("要添加%s" % item)

创建房子对象

# 创建房子对象
my_home = House("两室一厅", 100)
print(my_home)
my_home.add_item(bed)

完善添加家具方法

def add_item(self, item):
    if self.free_area > item.area:
        self.free_area -= item.area
        self.item_list.append(item.name)
        print("要添加%s" % item)
        print("剩余空间: %s" % self.free_area)
    else:
        print("剩余空间不足, 不能添加, 剩余%s" % self.free_area)

你可能感兴趣的:(python面向对象,python)