01_Python3中对封装的认识

前言

  本片博客旨在对Python中面向对象编程封装的理解,后面附带几个程序问题方便理解。

问题1:

  小明体重75.0公斤,每次跑步体重减少0.5公斤,每次吃东西体重增加1公斤。


分析:
  类——人
  属性——姓名,体重
  方法——跑步,吃


相关代码:

# 创建一个人类
class Person:
    # 定义初始化属性
    def __init__(self, name, weight):
        self.name = name
        self.weigt = weight
    
    # 定义跑的方法
    def run(self):
        self.weigt -= 0.5
        print('%s通过跑步体重减少了0.5公斤' % self.name)
    
    # 定义吃的方法
    def eat(self):
        self.weigt += 1
        print('%s通过吃东西,体重增长了1公斤' % self.name)
	
	# 打印对象属性
    def __str__(self):
        return ("%s当前的体重为:%.2f公斤" % (self.name, self.weigt))

# 创建小明对象
Xm = Person('小明',75.0)
# 调用方法
Xm.eat()
Xm.run()
# 打印对象属性
print(Xm)

运行结果:
小明通过吃东西,体重增长了1公斤
小明通过跑步体重减少了0.5公斤
小明当前的体重为:75.50公斤


总结:
  1.封装是面向对象编程的一大特点
  2.面向对象编程第一步——将属性和方法封装到一个抽象的类中
  3.外界使用类创建对象,然后让对象调用方法
  4.对象方法细节都被封装在类的内部
  5.同一个类创建的多个对象之间,属性互不干扰。


问题2:

  1.房子有户型、总面积和家具名称列表
  2.家具有名字和占地面积
    a.床:占地面积4平米
    b.衣柜:占地面积2平米
    c.餐桌:占地面积1.5平米
  3.将以上三件家具添加到房子中
  4.打印房子时,要求输出户型、总面积、剩余剩余面积、家具名称列表


分析:
  1.两个类——房子、家具
  2.房子属性——户型、面积、剩余面积、家具列表
  3.家具属性——名字、面积
  4.将家具属性添加到房子属性
  5.开发时,先开发家具类,一般被使用的类,通常应该先开发。


相关代码:

# 创建家具类
class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

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


# 创建房子类
class House:
    def __init__(self, type, area):
        self.type = type
        self.area_all = area
        # 剩余面积
        self.area_extra = area
        # 家具列表
        self.item_list = []

    def __str__(self):
        # python可以自动将()内部代码连接在一起
        return ("户型:%s\n总面积:%.2f平米"
                "[剩余面积:%.2f平米]\n家具列表:%s"
                % (self.type, self.area_all,
                   self.area_extra, self.item_list))

    def add_item(self, item):
        print("要添加的家具%s" % item)
        # 1.判断家具的面积
        if item.area > self.area_extra:
            print("%s面积太大,无法添加" % item.name)
            # 不执行return后面的代码
            return
        # 2.将家具的名称添加到列表中
        self.item_list.append(item.name)
        # 3.计算剩余面积,调用家具中的面积属性
        self.area_extra -= item.area


# 创建家具对象
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
# 创建房子对象
my_house = House("两室一厅", 60)
# 添加家具
my_house.add_item(bed)
my_house.add_item(chest)
my_house.add_item(table)
# 打印房子属性
print(my_house)

运行结果:
要添加的家具席梦思占地 4.00 平米
要添加的家具衣柜占地 2.00 平米
要添加的家具餐桌占地 1.50 平米
户型:两室一厅
总面积:60.00平米[剩余面积:52.50平米]
家具列表:[‘席梦思’, ‘衣柜’, ‘餐桌’]


时间:2019年5月2日23:50:51


猜你喜欢

转载自blog.csdn.net/qq_44713454/article/details/89766136