python屬性私有化(python編程是干嘛的)
今天學習的是劉金玉老師零基礎Python教程104期 類和對象,開始面向對象的開發。
一、類的屬性
(一)類的屬性:類似于人的身高、職業、性別等稱為屬性。注意:類的屬性默認情況下是直接被開放出去,可以直接調用讀取和賦值的。
一、類的方法
(一)在類的內部不同方法之間是可以調用類的同一個性的。
class person:
def setname(self,name):
self.name=name
def getname(self):
return self.name
def sayhello(self):
print("hello,"+p.name)
(二)類的方法私有化作用就是將類的方法只被某些特定的對象調用,只需要在方法名前加兩個下劃線即可私有化類的方法。而實際上,這種類型的私有化并不是絕對不能被調用的,我們可以采用類的名稱前加一個下劃線以及定義的真個私有方法名的拼接組合一個新的方法名稱就可以調用。(為什么私有化的類可以被調用呢?在python中,私有化的類方法在被編譯的時候,實際上就是在這個方法名稱前面拼接了下劃線和類的名稱。)
class person:
def setname(self,name):
self.name=name
def getname(self):
return self.name
def __sayhello(self):
print("hello,"+p.name)
p.person__sayhello()
(三)如何私有化的調用方式知道的呢?
使用inspect庫進行方法。
import inspect
methods=inspect.getmembers(p,predicate=inspect.ismethod)
print(methods)
注意點:inspect.getmembers(類的對象,篩選依據)
(四)補充:無論是類的方法還是類的屬性,只要在方法或者屬性名稱前面加上兩個下劃線,那么就會被python編譯器自動私有化,會在這個名稱前面加上一個_類的名稱。
class person:
def setname(self,name):
self.name=name
def getname(self):
return self.name
def __sayhello(self):
print("hello,"+p.name)
p=person()
p.setname("二流子")
print(p.getname())
print(p.name)
p._person__sayhello()
import inspect
methods=inspect.getmembers(p,predicate=inspect.ismethod)
print(methods)
免責聲明:一、71愛課網旨在免費為用戶傳遞信息,不代表本站的觀點和立場;
二、71愛課網僅提供信息發布平臺,對于本文版權歸屬問題本站無法判斷和調查;
三、本文整理于會員新聞,如果侵犯您的版權,請聯系管理員刪除或增加版權信息(QQ:981561103)。