Private Attribute
  • 私有屬性(Private Attribute)簡述

無論是在C++或是Java中,若要標記為private屬性則必須加入private關鍵字。
在Python中則是以命名方式來區分,只要加入兩個底線"__"來標記為private屬性

基本語法:

class classAttribute:
        __exName = 'Hello,world'

或許會有讀者覺得這種命名方式很不可思議,以下展示一個實驗範例:

class classAttribute:
    __exName = 'Hello,world'
    exName = 'Hello,user'
 
a = classAttribute()
 
print a.__exName #AttributeError: classAttribute instance has no attribute '__exName'
print a.exName   #Hello,user

上述程式中,我們定義了兩個exName,一個為private屬性,一個則是public,在呼叫a.__exName時IDE顯示一個error證明無法呼叫,而a.exName則證實了在Python的class中所宣告的class中,方法與其資料成員都是公開(public)的

再來舉個使用private的範例:

class classAttribute:
    __vicName = 'Hello,world'
    vicName = 'Hello,user'
    def __init__(self,newName):
        self.newName = newName
 
    def __getattr__(self):
        return self.__vicName
 
    def __str__(self):
        return classAttribute.__getattr__(self) + '! and ' + self.vicName + self.newName
 
ex = classAttribute('! and Hello,everyone')
 
print ex.__str__()
 
#-----------result-----------
Hello,world! and Hello,user! and Hello,everyone