封裝是物件導向程式設計的一大特點
物件導向程式設計的第一步—— 將屬性和方法封裝到乙個抽象的類中
外界使用類建立物件,然後讓物件呼叫方法
物件方法的細節都被封裝在類的內部
需求
小明體重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語法簡潔而清晰,具有豐富和強大的類庫。但實際上面向過程...