2012-10-03 63 views
2

我有父母&一個子類,並試圖實例子類繼承父類的屬性。的Python OOO設計多類

此代碼工作得很好,但想知道是否有無論如何要保持self.list1是私有的,即;如果我聲明self .__ list1,那麼它不能被子類訪問。

是否可以覆蓋childclass方法,以保持自身.__列表1私人?

class parent(object): 
    def __init__(self,x,y): 
     self.x = x 
     self.y = y 
     self.list1 = ['a','b','c'] 
     print('self.x',self.x) 
     print('self.y',self.y) 

class child(parent): 
    def test(self): 
     print('In child self.x',self.x) 
     print('In child self.list1',self.list1) 

class test(object): 
    def __init__(self,x1,y1): 
     self.x1 = x1 
     self.y1 = y1 

    def process(self): 
     childobj = child(self.x1,self.y1) 
     childobj.test() 

     pass 


def main():    
    testx = test(2,3) 
    testx.process() 

回答

5

docs:不能從除內部 對象並不在Python存在訪問

私有」實例變量。然而,有一個慣例 後跟最Python代碼:以下劃線 (例如_spam)前綴的名稱應被視爲在API (無論它是一個函數,方法或的非公共部分數據成員)。它應該是 考慮實施的細節,並可能會更改沒有 通知。

兩個下劃線前綴調用name mangling,它是由您的客戶尊重的這些變量/方法「私有性」