1 class Post(): 2 3 def __init__(self): 4 self.title = 'org' 5 self.__decodeTitle(); 6 7 8 def __decodeTitle(self): 9 self.title = "title1"; 10 11 class Post2(Post): 12 13 def __init__(self): 14 Post.__init__(self); 15 def __decodeTitle(self): 16 self.title = "title2"; 17 18 post = Post() 19 print(post.title) 20 21 post2 = Post2() 22 print(post2.title)
運行結果:python
title1post
title1spa
熟悉C#程序的我,這段程序給我形成深深的困擾.第二個輸出title1,豈不是python中繼承多態的特色無法使用??????code
後來,我才發現是我多慮了.blog
1 class Post(): 2 3 def __init__(self): 4 self.title = 'org' 5 self.decodeTitle(); 6 7 8 def decodeTitle(self): 9 self.title = "title1"; 10 11 class Post2(Post): 12 13 def __init__(self): 14 Post.__init__(self); 15 def decodeTitle(self): 16 self.title = "title2"; 17 18 post = Post() 19 print(post.title) 20 21 post2 = Post2() 22 print(post2.title)
這樣就會輸出繼承
title1編譯器
title2.it
個人理解就是 __decodeTitle這個方法是私有的,根本不能繼承下來.編譯
我寫這段代碼的時候哦,用的記事本些的,沒有報錯.沒有警告,因此讓我困惑了很久.class
我不知道其餘的編譯器遇到這種會不會有提示什麼的.