python中的封裝和私有化

2021-09-10 14:04:21 字數 1417 閱讀 1194

在程式設計中,封裝(encapsulation)是對 object 的一種抽象,即將某些部分隱藏起來,在程式外部看不到,即無法呼叫(不是人用眼睛看不到那個**,除非用某種加密或者混淆方法,造成現實上的困難,但這不是封裝)。

要了解封裝,離不開「私有化」,就是將類或者函式中的某些屬性限制在某個區域之內,外部無法呼叫。

python 中私有化的方法也比較簡單,就是在準備私有化的屬性(包括方法、資料)名字前面加雙下劃線

舉例如下:

__metaclass__ = type

class protectme:

def __init__(self):

self.me = "zqs"

self.__name = "kivi"

def __python(self):

print("i love python")

def code(self):

print("which language do you like")

self.__python()

if __name__ == '__main__':

p = protectme()

print(p.me)

print(p.__name)

執行結果:

zqs

traceback (most recent call last):

file "c:/zhu/python-pytorch/test4.py", line 18, in print(p.__name)

attributeerror: 'protectme' object has no attribute '__name'

檢視報錯資訊,告訴我們沒有__name那個屬性。果然隱藏了,在類的外面無法呼叫。

用上面的方法,的確做到了封裝。但是,我如果要呼叫那些私有屬性,該怎麼辦?

可以使用property函式。

class protectme:

def __init__(self):

self.me = "zqs"

self.__name = "kivi"

@property

def name(self):

return self.__name

if __name__ == '__main__':

p = protectme()

print(p.name)

從上面可以看出,用了@property之後,在呼叫那個方法的時候,用的是p.name的形式,就好像在呼叫乙個屬性一樣,跟前面的p.name的格式相同。

python私有化方法 Python 私有化

python中的私有變數和私有方法仍然是可以訪問的 訪問方法如下 私有變數 例項.類名 變數名 私有方法 例項.類名 方法名 python並沒有真正的私有化支援,但可用下劃線得到偽私有。盡量避免定義以下劃線開頭的變數 1 單下劃線 開始的成員變數叫做保護變數,意思是只有類例項和子類例項能訪問到這些變...

Python中屬性的私有化

1.引入 在python物件導向程式設計過程中,修改類屬性都是直接通過類名修改的,如果有些重要的屬性不希望他人任意修改怎麼辦呢?這就要用到屬性私有化功能。2.概念 保護屬性安全,使其不能隨意修改,將屬性定義為私有屬性,新增乙個可呼叫的方法去使用。3.語法 兩個下劃線開頭,宣告該屬性為私有,不能在類的...

物件導向 封裝和private私有化

封裝的概述 封裝是指隱藏物件的屬性和實現細節,僅僅對外提供了可見的公共的方法。將不需要或則不能對外提供的內容隱藏起來,進行封裝。簡單地說就是將功能的具體實現 寫到方法中,外界只需要呼叫該方法名就可實現功能。封裝的表現 函式就是乙個基本的封裝體。類也是乙個封裝體 封裝的優點 1 提高了 的復用性。2 ...