python 物件導向

來源:互聯網
上載者:User

標籤:物件導向

類和對象


        面向過程和物件導向的編程

               面向過程的編程:函數式編程,c程式等

               物件導向的編程:c++,JAVA ,python等

        類和對象:是物件導向中的兩個重要概念

                類:是對事物的抽象,比如:汽車模型(某一類事物的描述,屬性和方法)

                對象:是類的一個執行個體,比如:qq轎車,大客車

        範例說明:

                汽車模型可以對汽車的特徵和行為進行抽象,然後可以執行個體化為一台真實的汽車體現出來


Python類的定義:


            python類的定義:

                    使用class關鍵字定義一個類,並且類名的首字母要大寫;

                    當程式員需要建立的類型不能用簡單類型表示時就需要建立類;

                    類把需要的變數和函數組合在一起, 這種包含稱之為“封裝”;

            python類的結構:

                    >>>class 類名:

                    ...                成員變數

                    ...                成員函數

                    ...

            類的建立:範例

#!/usr/bin/python#coding:utf8class Ren:                #class關鍵字,類別首字母大寫    name = "人"           #屬性    high = "一人高"       #屬性    wight = "一人重"      #屬性    def run(self):        #成員函數定義方法;        print "跑步"
#注意類當中定義成員函數時和外邊定義函數時有區別,裡邊必須有一個形參,用來傳遞類當中的屬性和方法,但調用的時候是不需要傳參的

            對象的建立:

                    建立對象的過程稱之為執行個體化,當一個對象被建立後,包含三個方面的特性:對象的控制代碼、屬性和方法。

                    控制代碼用於區分不同的對象;

                    對象的屬性和方法與類中的成員變數和成員函數對應

#!/usr/bin/python#coding:utf8class Ren:    name = ‘人‘    high = ‘一人高‘    wight = ‘一人重‘    def run(self):                           #self 表示自己的類別        print ‘跑步‘zhangsan = Ren()                             #從Ren 的類別中執行個體化一個對象    print zhangsan
[[email protected] class]# python class.py<__main__.Ren instance at 0x7ff7f80110e0>     #instance 執行個體#列別中的執行個體(對象)#對象zhangsan具有屬性和方法,zhangsan的屬性就是類別中Ren的成員變數,方法就是類別中的函數

   #屬性的訪問 (通過對象.)

.....print zhangsan.high[[email protected] class]# python class.py 一人高

   #對象屬性的重新賦值

.......zhangsan.name = "張三"print zhangsan.name[[email protected] class]# python class.py 張三

#注意:對象是從類別中執行個體化出來的,它具有類別的屬性和方法,同時對象也是一個個體.

zhangsan.money = "10000"print zhangsan.money[[email protected] class]# python class.py 10000

Python對象的體繫結構:

           -經典對象:內部由屬性和方法組成,屬性可以是資料類型也可以是函數類型。

                             如果屬性為函數則該屬性就是一個方法。

           -新型對象-定義新型對象,必須繼承object方法class_name(object)

                            新型對象提供了對類方法和靜態方法的支援                    

                  ....                  class Ren(object):

類的屬性:

         類有屬性和方法組成,類的屬性是對資料的封裝,類的方法則是對類的行為的封裝。類的屬性按使用範圍分為私人屬性和公有屬性,類的屬性範圍取決於屬性的名稱    

         公有屬性:所謂共有屬性就是在類中和類外調用的屬性

#!/usr/bin/python#coding:utf8class Ren(object):    name = ‘人‘    high = ‘一人高‘    wight = ‘一人重‘     def run(self):        print self.name            #調用內部屬性,self代表本身,訪問自己,調用類的屬性        print ‘跑步‘ if __name__ == ‘__main__‘:    zhangsan = Ren()    zhangsan.name = "張三"    print zhangsan.name            #外部存取    zhangsan.run()    print Ren.name                 #通過類名訪問屬性


         私有屬性:不能被類以外的函數調用

#!/usr/bin/python#coding:utf8class Ren(object):    name = ‘人‘    high = ‘一人高‘    wight = ‘一人重‘    __money = ‘1000‘    def run(self):        print self.name        print ‘跑步‘        if __name__ == ‘__main__‘:    zhangsan = Ren()    zhangsan.name = "張三"    print zhangsan.__money[[email protected] class]# python class.py Traceback (most recent call last):  File "class.py", line 15, in <module>    print zhangsan.__moneyAttributeError: ‘Ren‘ object has no attribute ‘__money‘ #無法調用
#!/usr/bin/python#coding:utf8class Ren(object):    name = ‘人‘    high = ‘一人高‘    wight = ‘一人重‘    __money = ‘1000‘    def run(self):        print self.name        print ‘跑步‘    def say(self):                  #內部方法中調用        print self.__moneyif __name__ == ‘__main__‘:    zhangsan = Ren()    zhangsan.name = "張三"    print zhangsan.say()            #通過內部調用方法顯示,實現對資料的封裝、隱藏

        (可以通過instance._classname_attribute方式訪問,但只用於調式程式)

    print zhangsan._Ren__money

         定義方式:以“__”雙底線開始的成員變數就是私人屬性,否則就是公有屬性

         內建屬性:有系統在定義類的時候預設添加的,由前後兩個底線構成__dict__,__module__

    ......    print Ren.__dict__    [[email protected] class]# python class.py 人##################################################{‘high‘: ‘\xe4\xb8\x80\xe4\xba\xba\xe9\xab\x98‘, ‘__module__‘: ‘__main__‘, ‘run‘: <function run at 0x7f9ebdb60230>, ‘name‘: ‘\xe4\xba\xba‘, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Ren‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Ren‘ objects>, ‘__doc__‘: None, ‘wight‘: ‘\xe4\xb8\x80\xe4\xba\xba\xe9\x87\x8d‘, ‘say‘: <function say at 0x7f9ebdb608c0>, ‘_Ren__money‘: ‘1000‘}





本文出自 “思想大於技術” 部落格,謝絕轉載!

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.