核心程式設計(六) 物件導向 封裝

2021-09-25 18:28:39 字數 1009 閱讀 1027

什麼是封裝呢?

在前面是不是寫過這樣的**

class dog:

froom = "ch"

def __init__(self, name, age, kind="erha"):

self.blood = 100

self.kind = kind

self.age = age

self.name = name

在當時我是不是說__ini__下放的是例項的私有變數?

其實這麼說是不對的

這只能說是例項變數,或者是成員變數

當時只是為了讓你能夠好理解才那麼表述的

這才算是私有屬性

玩過角色扮演類遊戲的都知道

每個人物都是有基礎屬性且不可被修改的

很明顯,如果我還是像上面那麼定義乙個私有屬性的話

那我在外面就可以呼叫並且修改

class dog:

froom = "ch"

def __init__(self, name, age, kind="erha"):

self.blood = 100

self.kind = kind

self.age = age

self.name = name

pass

d = dog("ponny", 3)

d.blood += 10

print(d.blood)

但是我不想在外面修改,因為這畢竟算是個「不可變的」引數

這就引出來我們要說的東西,封裝

封裝可以被認為是乙個保護屏障,防止該類的**和資料被外部類定義的**隨機訪問。

要訪問該類的**和資料,必須通過嚴格的介面控制。

封裝最主要的功能在於我們能修改自己的實現**,而不用修改那些呼叫我們**的程式片段。

適當的封裝可以讓程式碼更容易理解與維護,也加強了**資料的安全性。

*有點東西*

*繼續深究*

(六)物件導向高階程式設計

如果我們想要限制例項的屬性怎麼辦?比如,只允許對student例項新增name和age屬性。為了達到限制的目的,python允許在定義class的時候,定義乙個特殊的slots變數,來限制該class例項能新增的屬性 class student object slots name age 用tupl...

六 物件導向(中)

類的構造方法 類的訪問許可權 繼承 多型 init 構造方法 作用 用於物件建立時初始化 書寫格式 init前後分別是兩個下劃線 程式不顯示定義init方法,則程式預設呼叫乙個無參init方法 物件建立過程 類的構造方法 init 設定物件屬性 def init self.gender,variet...

六 物件導向案例分析

編寫乙個完整的位址類進行測試,並列印出來class address public address string countrv,string porvince,string city,string district public void send public string getcountrv ...