零基礎入門學習Python(17):對象(2)
在Python類中定義私有屬性只需要在變量名或函數名前加上”__”兩個下劃線,那麼這個屬性或方法就成爲私有的了。外部不能訪問類中的私有屬性,可以通過類的公有方法訪問
>>> class Test:
__name = 'Jessica' #在外部將變量名隱藏,可以通過調用方法從內部獲取私有變量
def getName(self):
print("The name is ",self.__name)
return self.__name
>>> test1 = Test()
>>> name1 = test1.getName()
The name is Jessica
>>> name1
'Jessica'
但是,在Python中,私有變量會被自動改成_類名__變量名
的形式,即就目前,Python的私有機制其實是僞私有,所以,Python的類是沒有權限控制的,變量是可以被外部調用的
>>> test1._Test__name
'Jessica'
下面簡單介紹一個魔法方法,魔法方法即能夠在恰當的時候被自動調用的方法,被雙下劃線包圍。
__init__(self,param1,param2,…)
實例化對象時可以傳入參數,生成實例化對象時就存在了。
>>> class Test2:
def __init__(self,name):
self.name = name #Python中的self就相當於C++中的this
def getName(self):
print("My name is %s,I am playing... " % self.name)
>>> test2 = Test2('xiuxiu') #生成實例對象時把參數也傳遞進去
>>> test2.getName()
My name is xiuxiu,I am playing...