python-物件導向進階

來源:互聯網
上載者:User

標籤:nbsp   調用   ror   send   ...   code   dict   __str__   style   

小總結:

     物件導向的好處

       更容易擴充,提高代碼的使用效率,使程式碼群組織性更強、更清晰,更適合複雜項目的開發

       封裝:把功能的實現細節封裝起來,之暴露調用介面

       多態:介面的繼承

       定義:

             類  :  模板

             對象 :  執行個體化的類

             屬性:私人屬性 __private  

                     公有屬性   存在類中的變數

                      成員屬性   執行個體變數

             方法 :函數

             建構函式:

           解構函式:執行個體被銷毀(手動刪除變數或者程式結束),調用解構函式

           新式類VS經典類:

                  新式類:繼承路徑:廣度優先  

                  經典類:繼承路徑:深度優先

 

一、抽象介面:                         

 1 class Alert(object): 2     ‘‘‘警示類‘‘‘ 3     def send(self): 4         raise NotImplementedError 5 class MailAlert(Alert): 6     def send(self,msg): 7         print(‘_____sending:‘,msg) 8 class SMSAlert: 9     pass10 m=MailAlert()11 m.send(‘ooooooooooooooooo‘)

 

二、類方法:

     類方法只能訪問類的公有屬性,不能訪問成員屬性和私人屬性

 1 class Person(object): 2     id=‘11111111111111111‘ 3     def __init__(self,name): 4         self.name=name 5     @staticmethod 6     def eat(name): 7         print(‘%s is eating...‘%name) 8     @classmethod 9     def h(self):10         print(‘%s‘%(self.id))11 #不需要執行個體化直接通過類調用12 Person.eat(‘eeeeeeeeeee‘)13 p=Person(‘song‘)   #類方法只能調用公有屬性,不嗯給你調用成員屬性和私人屬性14 p.h()

    靜態方法既不能訪問公有屬性也不能訪問執行個體屬性

 

三、屬性方法

      把一個方法變成一個變數

 1 class Person(object): 2     id=‘11111111111111111‘ 3     def __init__(self,name): 4         self.name=name 5     @property 6     def talk(self): 7         print(‘%s say‘%self.name) 8 p=Person(‘songxiaonan‘) 9 # p.talk()   #報錯10 p.talk  #  songxiaonan say

      給屬性方法變成變數後,給這個變數附一個值    @talk.setter

 1 class Person(object): 2     id=‘11111111111111111‘ 3     def __init__(self,name): 4         self.name=name 5     @property 6     def talk(self): 7         print(‘%s say‘%self.name) 8     @talk.setter 9     def talk(self,msg):10         print(‘talk %s‘%msg)11 p=Person(‘songxiaonan‘)12 # p.talk()   #報錯13 p.talk  #  songxiaonan say     p.talk調用的是第一個talk14 p.talk=‘ahahhahhahahaha‘    #talk ahahhahhahahaha    p.talk=值  就是調用的第二個talk

      刪除變數   @talk.deleter

 1 class Person(object): 2     id=‘11111111111111111‘ 3     def __init__(self,name): 4         self.name=name 5     @property 6     def talk(self): 7         print(‘%s say‘%self.name) 8     @talk.setter 9     def talk(self,msg):10         print(‘talk %s‘%msg)11     @talk.deleter12     def talk(self,msg):13         print(‘delete.....‘)
   del p.talk

 

四、類的其他特殊方法

 1 class Animal(object): 2     country=‘BeiJing‘ 3     def __init__(self,name,age): 4         self.name=name 5         self.age=age 6     def __str__(self):    #   定製執行個體的返回結果 7         return ‘%s——%s‘%(self.name,self.age) 8  9 A = Animal(‘CAT‘, ‘12‘)10 print(A.__dict__)    #   列印執行個體的屬性   {‘name‘: ‘CAT‘, ‘age‘: ‘12‘}11 print(A.__module__)  #   列印執行個體所在的模組    __main__12 print(A.__class__)   #   列印執行個體所在的類   <class ‘__main__.Animal‘>13 print(A)  #  CAT——12

 

                   

 

python-物件導向進階

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.