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

2022-03-01 10:07:32 字數 4624 閱讀 8318

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

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

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

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

需求

小明體重75.0公斤

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

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

"""人類"""

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方法,向房間新增家具時,讓剩餘面積-=家具面積

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

答案——家具類

家具簡單

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

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

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

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

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

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

需求

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

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

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

物件導向 04

模組的概念,如何匯入模組 每乙個以副檔名py結尾的python源 檔案都是乙個模組,在模組中定義的全域性變數 函式 類 都是提供給外界直接使用的工具,模組相當於是乙個工具包 匯入模組的兩種方式 import 模組名1,模組名2 import 模組名1 import 模組名2 from 模組 impo...

python 物件導向 python是物件導向嗎

python是一種物件導向 解釋型計算機程式語言,由guido van rossum於1989年底發明,第乙個公開發行版發行於1991年,python 源 同樣遵循 gpl gnu general public license 協議。python語法簡潔而清晰,具有豐富和強大的類庫。但實際上面向過程...