国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Python的OO思想

2019-11-14 17:24:13
字體:
來源:轉載
供稿:網友

想當年大二的時候,在學校學習java,

最牛逼的OO思想,用了3頁紙就講完了,還是清華大學出版社的呢。

后來全憑自己啃視頻,啃代碼才搞懂什么叫做OO。

 

現在學習Python,就用自己的方式,好好學習一次:

OO的基本,是封裝,繼承,多態。

 

首先是繼承:

定義一個類:

Python代碼  收藏代碼
  1. class Bird(object):  
  2.     have_feather = True  
  3.     way_of_rePRoduction  = 'egg'  

 

調用這個類:

Python代碼  收藏代碼
  1. summer = Bird()  
  2. print summer.way_of_reproduction  

與Java不同是,Python是不需要new來實例化類的。

 

同樣,Python的類下面是可以定方法的:

Python代碼  收藏代碼
  1. class Bird(object):      
  2.     have_feather = True      
  3.     way_of_reproduction = 'egg'      
  4.       
  5.     def say(self, Word='hi hi'):  
  6.               print 'i say :' + word  

 

注意一點,所有類的函數,必須至少帶有一個參數,這個參數必須是self。

類以外的函數沒有這一個限制。

Python代碼  收藏代碼
  1. chk = Chicken()  
  2. print chk.have_feather  
  3. print chk.sat('hello')  

 

__init__()方法

__init__()是一個特殊方法(special method)。Python里會有一些特殊方法,Python會以特別的方式處理它們。特殊方法的名字的特點是前后都有兩個下劃線。

__init__()方法的特殊在于,如果你在類中定義了這個方法,一旦你根據這個類建立對象,Python就會自動調用這個方法(這個過程也叫初始化)。

如:

Python代碼  收藏代碼
  1. class happyBird(Bird):  
  2.     def __init__(self,more_words):  
  3.         print 'We are happy birds.',more_words  
  4.   
  5. hb = happyBird('Happy,Happy!')  

 

父類方法的重載:

Python代碼  收藏代碼
  1. class Hello(object):  
  2.     name = 'hello'  
  3.       
  4.     def __init__(self):  
  5.         self.name='my name is hello'  
  6.       
  7.     #類中的參數必須帶有self參數  
  8.     def sayhi(self):  
  9.         print 'hi you'  
  10.   
  11. class World(Hello):   
  12.     def __init__(self):  
  13.         #這里訪問的是父類初始化的變量名  
  14.         print 'before:',Hello.name   
  15.         super(World,self).__init__()    
  16.         #由于調用了父類的初始化構造函數,繼承了父類的變量的改變  
  17.         print 'after:',self.name  
  18.           
  19.         #近似于方法重載  
  20.     def sayhi(self,word='baby'):  
  21.         #調用父類sayhi方法  
  22.         super(World,self).sayhi()  
  23.         print 'hi '+word  
  24.               
  25.     def sayWorld(self):  
  26.         print 'hi,hello world'  
  27.           
  28. if __name__ == '__main__':  
  29.     c = World()  
  30.     c.sayhi()  
  31.     c.sayWorld()  

 

 另外,python是允許多繼承的,但是這個是個非常危險的操作,建議不要隨便使用。 

 

關于Python的多態,就像JavaScript一樣,直接訪問對象的屬性,不需要使用接口,沒有類型轉換。

對于類型的判斷,有抓們的type()函數,和isinstance()函數判斷是否某個函數的子類。

Python代碼  收藏代碼
  1. isinstance(object, classinfo)   
  2. 判斷實例是否是這個類或者object是變量  
  3.   
  4. classinfo 是類型(tuple,dict,int,float)  
  5. 判斷變量是否是這個類型   
  6.   
  7. class objA:   
  8. pass   
  9.   
  10. A = objA()   
  11. B = 'a','v'   
  12. C = 'a string'   
  13.   
  14. print isinstance(A, objA)   
  15. print isinstance(B, tuple)   
  16. print isinstance(C, basestring)   
  17. 輸出結果:   
  18. True   
  19. True   
  20. True   

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵德县| 河北省| 明星| 张北县| 敦化市| 崇阳县| 筠连县| 成武县| 桃园市| 邻水| 禹城市| 涿州市| 竹山县| 汶川县| 怀柔区| 武乡县| 卫辉市| 阆中市| 皮山县| 延安市| 绍兴市| 安达市| 宜兰县| 自治县| 辉县市| 晋宁县| 永川市| 勃利县| 丰都县| 本溪市| 焉耆| 惠州市| 平定县| 武冈市| 许昌县| 蓬莱市| 永城市| 通河县| 柞水县| 石城县| 巴林左旗|