3 3物件導向封裝案例1擺家具

2022-09-13 23:21:17 字數 4551 閱讀 2851

封裝是物件導向程式設計的一大特點

物件導向程式設計的第一步—— 將屬性方法封裝到乙個抽象的

外界使用建立物件,然後讓物件呼叫方法

物件方法的細節都被封裝類的內部

需求

小明體重75.0公斤

小明每次跑步會**0.5公斤

小明每次吃東西體重增加1公斤

```python class person: """人類"""

def __init__(self, name, weight):

self.name = name

self.weight = weight

def __str__(self):

return "我的名字叫 %s 體重 %.2f 公斤" % (self.name, self.weight)

def run(self):

"""跑步"""

print("%s 愛跑步,跑步鍛鍊身體" % self.name)

self.weight -= 0.5

def eat(self):

"""吃東西"""

print("%s 是吃貨,吃完這頓再**" % self.name)

self.weight += 1

xiaoming = person("小明", 75)

xiaoming.run() xiaoming.eat() xiaoming.eat()

print(xiaoming)

需求

小明小美都愛跑步

小明體重75.0公斤

小美體重45.0公斤

每次跑步都會減少0.5公斤

每次吃東西都會增加1公斤

提示

物件的方法內部,是可以直接訪問物件的屬性

同乙個類建立的多個物件之間,屬性互不干擾!

需求

房子(house)戶型、總面積 和家具名稱列表

家具(houseitem)名字占地面積,其中

將以上三件家具新增房子

列印房子時,要求輸出:戶型總面積、剩餘面積、家具名稱列表

剩餘面積

在建立房子物件時,定義乙個剩餘面積的屬性初始值和總面積相等

當呼叫add_item方法,向房間新增家具時,讓剩餘面積-=家具面積

思考:應該先開發哪乙個類?

答案——家具類

家具簡單

房子要使用到家具,被使用的類,通常應該先開發

```python class houseitem:

def __init__(self, name, area):

""":param name: 家具名稱

:param 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)

print(bed) print(chest) print(table)

小結

建立了乙個家具類,使用到__init____str__兩個內建方法

使用家具類建立了三個家具物件,並且輸出家具資訊

```python class house:

def __init__(self, house_type, area):

""":param house_type: 戶型

:param area: 總面積

"""self.house_type = house_type

self.area = area

# 剩餘面積預設和總面積一致

self.free_area = area

# 預設沒有任何的家具

self.item_list =

def __str__(self):

# python 能夠自動的將一對括號內部的**連線在一起

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("兩室一廳", 60)

myhome.additem(bed) myhome.additem(chest) myhome.additem(table)

print(my_home) ```

小結

建立了乙個房子類,使用到__init____str__兩個內建方法

準備了乙個add_item方法準備新增家具

使用房子類建立了乙個房子物件

房子物件呼叫了三次add_item方法,將三件家具以實參傳遞到add_item內部

需求

```python def add_item(self, item):

print("要新增 %s" % item)

# 1. 判斷家具面積是否大於剩餘面積

if item.area > self.free_area:

print("%s 的面積太大,不能新增到房子中" % item.name)

return

# 2. 將家具的名稱追加到名稱列表中

# 3. 計算剩餘面積

self.free_area -= item.area

物件導向封裝案例

封裝是物件導向程式設計的一大特點 物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法物件方法的細節都被封裝在類的內部 class person 人類 def init self,name,weight self.name name self.weigh...

Python物件導向04 物件導向封裝案例

封裝是物件導向程式設計的一大特點 物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法物件方法的細節都被封裝在類的內部需求 小明體重75.0公斤 小明每次跑步會 0.5公斤 小明每次吃東西體重增加1公斤 class person 人類 def init ...

Python物件導向05 物件導向封裝案例 II

封裝 封裝是物件導向程式設計的一大特點 物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法物件方法的細節都被封裝在類的內部乙個物件的屬性可以是另外乙個類建立的物件 需求 士兵許三多有一把ak47士兵可以 槍能夠發射子彈 槍裝填裝填子彈 增加子彈數量sh...