python物件導向之封裝

2021-10-02 07:12:08 字數 3425 閱讀 9363

封裝

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

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

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

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

需求(1)

1.小明體重75.0公斤

2.小明每次跑步都會**0.5公斤

3.小明每次吃東西體重都會增加1公斤

需求(2)

1.小明和小美都愛跑步

2.小美體重45.0公斤

2.每次跑步都會**0.5公斤

3.每次吃東西體重都會增加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.5)

xiaoming.run()

xiaoming.eat()

print(xiaoming)

xiaomei = person('小美',45)

需求:

1.房子有戶型,總面積和家具名稱列表

新房子是沒有家具的

2.家具有名字和占地面積,其中

eg:占地 6平方公尺

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

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

class houseitem:

# 初始化方法

def __init__(self,name,area):

self.name = name

self.area = area

def __str__(self):

return '[%s] 占地 %.2f' %(self.name,self.area)

class house:

def __init__(self,house_type,area):

self.house_type = house_type

self.area = area

# 剩餘面積

self.free_area = area

self.item_list =

def __str__(self):

return '戶型:%s,\n總面積:%.2f[剩餘:%.2f]\n家具:%s'\

%(self.house_type,self.area,self.free_area,self.item_list)

def add_item(self,item):

# 1.判斷家具的面積

if item.area > self.free_area:

print('%s的面積太大了,無法新增' %(item.name))

return

# 將家具的名稱新增到列表中

# 計算剩餘面積

self.free_area -= item.area

# 建立家具

bed = houseitem('床',600)

print(bed)

chest = houseitem('chest',2)

print(chest)

table = houseitem('桌子',4.5)

print(table)

# 建立房子物件

my_home = house('三室兩廳',200)

# 將家具新增到房子裡面去

1.士兵瑞恩有一把ak47

2.士兵可以**(士兵**扣動的是扳機)

3.槍 能夠 發射子彈(把子彈發射出去)

4.槍 能夠 裝填子彈 --增加子彈的數量

class gun:

def __init__(self,model):

self.model = model

self.bullet_count = 0

def add_bllet(self,count):

self.bullet_count += count

def shoot(self):

if self.bullet_count <= 0:

print('%s 沒有子彈了...' %(self.model))

return

self.bullet_count -= 1

print('%s ~~~~%s' %(self.model,self.bullet_count))

class soldier:

def __init__(self,name):

self.name = name

self.gun = none

def fire(self):

if self.gun == none:

print('%s 還沒有槍...' %(self.name))

python物件導向之封裝

在python中用雙下劃線開頭的方式將屬性隱藏起來 設定成私有的 其實這僅僅這是一種變形操作且僅僅只在類定義階段發生變形 類中所有雙下劃線開頭的名稱如 x都會在類定義時自動變形成 類名 x的形式 classa n 0 類的資料屬性就應該是共享的,但是語法上是可以把類的資料屬性設定成私有的如 n,會變...

python物件導向之 封裝

1.先看隱藏。在python中用兩個下劃線開頭的方式將屬性隱藏起來。注意 這種只是語法的變形,在讀到有以 開的的函式時,會自動將名稱變成 類名 屬性 這種格式,所以在函式外部是無法通過 屬性 找到這個屬性的。class foo n 111111 將屬性隱藏起來 在定義階段會變成 foo n def ...

python物件導向(二)之封裝

在程式設計中,封裝 encapsulation 是對具體物件的一種抽象,即將某些部分隱藏起來,在程式外部看不到,其含義是其他程式無法呼叫。即 封裝 就是將抽象得到的資料和行為 或功能 相結合,形成乙個有機的整體 即類 封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是要通過外...