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

2021-08-26 17:42:34 字數 4281 閱讀 9951

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

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

外界使用建立物件,然後讓物件呼叫方法物件方法的細節都被封裝類的內部需求

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

需求

小明小美都愛跑步

小明體重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公斤 人類 def init self,name,w...

物件導向 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語法簡潔而清晰,具有豐富和強大的類庫。但實際上面向過程...