00805 將名稱封裝到類中

2021-07-26 02:51:14 字數 1321 閱讀 9269

想封裝類的例項上面的「私有」資料,但是python語言並沒有訪問控制。

單下劃線(_)開始的名字應該總被認為只屬於內部的

#!/usr/bin/env python

class

a:def

__init__

(self):

self._internal = 0

self.public = 1

defpublic_method

(self):

""" a public method

"""def_internal_method

(slef):

;"""python並不會真的阻止別人訪問內部名稱。但是如果你這麼做肯定是不好的,

可能會導致脆弱的**。

已下劃線大頭的標識也可以用於模組名稱和模組級別的函式中。

如果見到一模組已_開始(_socket),則它屬性內部實現。

比如 sys._getframe() 使用起來要特別注意

"""

class

b:def

__init__

(self):

self._private = 0

def__private_method

(self):

;def

public_method

(self):

self.__private_method()

"""雙下滑線打頭的名稱會導致出現名稱重整(name mangling)的行為。

也就是,這個類中的私有屬性會被分別重新命名為_b__private和_b__private_method

目的: 為了繼承,這樣的屬性不能通過繼承覆蓋。

"""class

c(b):

def__init__

(self):

super().__init__()

self._private = 1

# 並不是重寫了b._private

""" 私有名字_private 會被重新命名為_c__private 和b中的重整名稱不同。

"""

應該使用那個?

(1) 讓非公有名稱以單下劃線開頭。

(2) 如果涉及到子類化處理,而且有些內部屬性應該對子類進行隱藏,那麼就使用雙下劃線開始

(3) 為了解決和關鍵字衝突,可以使用 在關鍵字後面加乙個下劃線如 case_.

Json資料封裝到相應的實體類中 工具類

1.jsonutils類 public classjsonutilscatch jsonprocessingexception e return null 將json結果集轉化為物件 param jsondata json資料 param 物件中的object型別 return public sta...

MFC SDI封裝到DLL中的實現

開始搞mfc了,微軟把sdk封裝到了一堆類中,初次接觸真是相當頭大了。這乙個把sdi的程式需要對外提供乙個dll就把我折磨了好幾天,最後網上一頓查資料,寫程式測試,總算是有了乙個比較完善的解決方案了。剩下的問題就簡單了,把原來的程式,拷進去,在initinstance中進行重要的初始化操作,把 m ...

前端 物件屬相封裝到實體類中,傳到後台

在開發中往往會將我們的一些用到物件的屬性需要傳到後台,而且物件還是多個,為了提高開發效率,故寫乙個公共的方法來將多個前台物件的屬性傳到後台。比如我這裡有物件var p 可能還有陣列物件 var ary 組裝請求jsonobj 把對應物件的所有屬性組裝到請求的sendobj中 param sendob...