日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python封装举例_Python面向对象封装操作案例详解

發布時間:2025/3/20 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python封装举例_Python面向对象封装操作案例详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了Python面向對象封裝操作。分享給大家供大家參考,具體如下:

目標

封裝

小明愛跑步

存放家具

01. 封裝

封裝 是面向對象編程的一大特點

面向對象編程的 第一步 —— 將 屬性 和 方法 封裝 到一個抽象的 類 中

外界 使用 類 創建 對象,然后 讓對象調用方法

對象方法的細節 都被 封裝 在 類的內部

02. 小明愛跑步

需求

小明 體重 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):

"""跑步"""

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)

2.1 小明愛跑步擴展 —— 小美也愛跑步

需求

小明 和 小美 都愛跑步

小明 體重 75.0 公斤

小美 體重 45.0 公斤

每次 跑步 都會減少 0.5 公斤

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

提示

在 對象的方法內部,是可以 直接訪問對象的屬性 的

同一個類 創建的 多個對象 之間,屬性 互不干擾!

03. 擺放家具

需求

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

新房子沒有任何的家具

家具(HouseItem) 有 名字 和 占地面積,其中

席夢思(bed) 占地 4 平米

衣柜(chest) 占地 2 平米

餐桌(table) 占地 1.5 平米

將以上三件 家具 添加 到 房子 中

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

剩余面積

在創建房子對象時,定義一個 剩余面積的屬性,初始值和總面積相等

當調用 add_item 方法,向房間 添加家具 時,讓 剩余面積 -= 家具面積

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

答案 —— 家具類

家具簡單

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

3.1 創建家具

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 兩個內置方法

使用 家具類 創建了 三個家具對象,并且 輸出家具信息

3.2 創建房間

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

小結

創建了一個 房子類,使用到 init 和 str 兩個內置方法

準備了一個 add_item 方法 準備添加家具

使用 房子類 創建了 一個房子對象

讓 房子對象 調用了三次 add_item 方法,將 三件家具 以實參傳遞到 add_item 內部

3.3 添加家具

需求

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.area

3.4 小結

主程序只負責創建 房子 對象和 家具 對象

讓 房子 對象調用 add_item 方法 將家具添加到房子中

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

希望本文所述對大家Python程序設計有所幫助。

總結

以上是生活随笔為你收集整理的python封装举例_Python面向对象封装操作案例详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。