Python物件導向封裝操作案例詳解

2022-10-04 15:18:17 字數 3344 閱讀 1775

封裝小明愛跑步

存放家具

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

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

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

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

需求小明 體重 75.0 公斤

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

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

提示:在 物件的方法內部,是可以 直接訪問物件的屬性 的!

**實現:

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

"""跑步"""

pricfcxjgzlxnt("%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) 有 名字 和 占地面積,其中

席夢思(bed) 占地 4 平公尺

衣櫃(chest) 占地 2 平公尺

餐桌(table) 占地 1.5 平公尺

將以上三件 家具 新增 到 房子 中

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

剩餘面積

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

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

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

答案 —— 家具類

家具簡單

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

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)

# 1. 建立家具

bed = houseitem("席夢思", 4)

chest = houseitem("衣櫃", 2)

table = houseitem("餐桌", 1.5)

print(bed)

print(chest)

print(table)

小結建立了乙個 家具類,使用到init和str兩個內建方法

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

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)

...# 2. 建立房子物件

my_home = house("兩室一廳", 60)

my_home.add_item(bed)

my_home.add_item(chest)

my_home.add_item(table)

print(my_hcfcxjgzlxome)

小結建立了乙個 房子類,使用到init和str兩個內建方法

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

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

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

需求1> 判斷 家具的面積 是否 超過剩餘面積,如果超過,提示不能新增這件家具

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

3> 用 房子的剩餘面積 - 家具面積

def add_item(self, item):

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

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

if item.area > self.free_area:

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

return

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

self.item_list.append(item.name)

# 3. 計算剩餘面積

self.free_area -= item.areacfcxjgzlx

主程式只負責建立 房子 物件和 家具 物件

讓 房子 物件呼叫 add_item 方法 將家具新增到房子中

面積計算、剩餘面積、家具列表 等處理都被 封裝 到 房子類的內部

Python 物件導向,封裝

封裝來了 封裝是啥?封裝就好像把你需要的東西裝到盒子裡然後用封口膠把空封起來。照這種邏輯看,封裝 隱藏 哪在python中怎麼看出來隱藏呢?在python中用雙下劃線開頭的方式將屬性隱藏起來 設定成私有的 類中所有雙下劃線開頭的都會自動變形成 類名 x的形式 就是把函式跟方法給封裝起來 定義裡兩個類...

python 物件導向 封裝

1.私有屬性 class person object def init self,name,age self.name name self.age age 例項屬性 self.attack val 30self.life val 100 前面加兩個下劃線就是私有變數,私有屬性 a person wd...

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

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