初學面向對象難免有點犯暈,希望這個引例可以幫到你。
房子內部添加家具,依據家具占地面積大小,判斷能否添加該家具,能的話添加進去,房子剩余面積變小,家具名稱進入家具列表,否則直接提示面積過大,無法添加。
class HouseItem:
"""創建家具類"""
def __init__(self, name, area):
self.name = name
self.area = area
def __str__(self):
return "[%s] area is %.2f" % (self.name, self.area)
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 ("House type:%s\narea is %.2f[free: %.2f]\nhouseitem: %s"
% (self.house_type, self.area, self.free_area, self.item_list))
def add_item(self, item):
"""添加家具函數"""
print("Add %s" % item)
# 判斷家具面積
if item.area > self.free_area:
print("%s area is too large,unable to add" % item.name)
return
# 將家具添加到列表
self.item_list.append(item.name)
# 計算剩余面積
self.free_area -= item.area
# 引用家具類(創建家具對象)
bed = HouseItem("bed", 20)
chest = HouseItem("chest", 5)
table = HouseItem("table", 100)
print(bed)
print(chest)
print(table)
# 創建房子對象
my_home = House("Two rooms and one hall", 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)