<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python類基礎知識學習總結

          共 3584字,需瀏覽 8分鐘

           ·

          2021-01-07 18:22

            本文是一篇關于Python類的學習總結,主要包括類的基礎知識、類的使用以及類的優(yōu)勢。如果你想弄清楚Python中的類,就趕緊接著看下去吧~

            ?

            ?

            1、類的基礎知識

            ?

            說到類,就不得不提面向過程編程和面向對象編程。下面用1個例子說明這兩種編程方式在編碼上的區(qū)別,如下圖所示:

            ?

            ?

            1)在面向對象編程中最重要的概念是類(Class)?和實例(Instance)?。

            ?

            2)類是抽象的模板,可以將其理解為一個基礎模板,比如Student類。而實例是根據(jù)類創(chuàng)建出來的一個具體對象?!拔镆灶惥?,人以群分”, 可以從這句話來理解編程中的類。類應該是有共同特點的事物的集合,比如人類、動物類。類中的對象應該有共同的特點,而這些特點對應編程中的類的共同屬性和方法。而具體的對象之間又或多或少有差別,比如在“鳥”這個類中,每只鳥又有自己的特點。

            ?

            3)每個對象都擁有相同的方法,但各自的數(shù)據(jù)可能不同。每個對象都擁有相同的方法,實例擁有類中所有的方法;無論實例的名稱如何不同,他們的方法都是一樣的。比如,類是?Student,?那么不管是實例?lilei,?還是實例hanmeimci,只要它們都是?Student的實例,它們所擁有的方法都是相同的。每個實例的數(shù)據(jù)可能不同,這是因為在使用實例時,如果需要在這個類中傳入?yún)?shù)作為初始數(shù)據(jù),那么每個實例可能會被傳入不同的數(shù)據(jù)。比如數(shù)據(jù)庫類,如果傳入的是不同的數(shù)據(jù)庫連接串,則實例的數(shù)據(jù)就不同了。

            ?

            2、類的使用

            ?

            1)在Python中,定義類是通過class關鍵字來實現(xiàn)的:

            class Studentobject):

            Pass

            class?后面緊接著是類名,即Student.類名通常采用單詞首字母大寫的形式命名,比如?StudentCore。

            ?(object)?表示該類是從哪個類繼承來的。如果沒有合適的繼承類,則通常使用?object?類,這是所有類都會繼承的類。

            ?

            2)實例化一個類是通過在類名后面加小括號()來實現(xiàn)的:

            pupil=Student ()

            “小學生”是“學生”這個的一個實例。所謂實例,可以將其理解為類的化身。類不能被直接使用,只能先將其實例化,然后用實例代表類,進而調用類中的方法處理數(shù)據(jù)。那么實例是怎么代表類的呢?在定義類及其方法時,有一個參數(shù)叫self,?它就是串聯(lián)實例與類之間的關鍵參數(shù),可以簡單地理解為“self=實例名”。

            類的下面有屬性和方法??梢詫傩岳斫鉃殪o態(tài)的數(shù)據(jù),將方法理解為動態(tài)的處理函數(shù)。比如,在下面的代碼中定義了“學生”類,其中_ _init_ _是屬性,print_score?是方法。

            #-*-coding:utf-8-*

            Class Student (object) :

            def _ _ init_ _ (self,name,score) :

            ? self.name= name

            self.score=score

            def print_score (self) :

            print ('%s: %s'% (self. _ _name,self. _ _acore) )

            ?

            3)實例化上面的類,然后分析Python?如何利用實例化類調用類中的方法。

            完整的實例化類與調用過程如下:

            pupil=student (name='lilei',score=99)

            pupil.print_score ()

            按照前面的說法,self=實例名,那么?pupil=Student (name='lilei',score=99) ,?實例化類的第一步是執(zhí)行?_ _init_ _?語句,即?Student (self='pupil',name='lilei',score=99) ,?則可知pupil.name='lilei',pupil.score=9.實例化類的第二步是執(zhí)行?pupil.print_score ()?語句,調用實例的方法就是調用類的方法,而這個方法是按照格式打印出

            ?pupil.name:pupil.score,mlilei: 99。

            ?

            3、類的優(yōu)勢

            ?

            1)類的訪問限制。

            所謂類的訪問限制,即在類的外部不能直接調用類中的數(shù)據(jù)。在?Python?中,在變量前加“_ _”可將變量置為私有變量,使其只能在類中被使用,不能被類之外的其他函數(shù)(方法)調用。下面代碼中的name?參數(shù)表示的就是私有變量。

            #-*-coding:utf-8-*-

            _ _author_ _='大嬸N72

            class Student (object) :

            def _ _init_ _(self,name,score) :

            self._ _name= name

            self.score= score

            def print_score (self) :

            print ('%s: %S'% (self._ _name,self._ _score) )

            MeiMei=Student ('hello', 99)

            print (MeiMei.score)

            print (MeiMei. _ _name)

            ?

            代碼的運行結果很好地佐證了加了“_ _”的參數(shù)是不能被調用的,沒加“_ _”的參數(shù)是可以直接被調用的,如下所示:

            C:\Python36\python3. exe F:/Autotest_interface_demo/test. py

            99

            Traceback (most recent call last):

            File "F:/Autotest interface demo/test.py, line 12, in

            print (MeiMei._name)

            AttributeError: ' Student' object has no attribute'__name

            ?

            Process finished with exit code 1

            ?

            2)?類的繼承。

            所謂“繼承”, 從字面上看很好理解:如果一個類繼承了另外一個類,則這個類就有了被繼承的類的所有方法和屬性。我們可以直接使用這些方法和屬性,無須再單獨寫。下面舉一個例子來解釋什么是繼承。類的基本定義如下:

            #?-*-?coding:utf-8 -*-

            ?_ _author_ _=‘大嬸N72

            #?父類

            class Parent (object) :

            def print_self (self) :

            return?“我是父類”

            #?子類繼承父類

            class Student (Parent) :

            def_ _init_ _ (self,name,score) :

            self. _ _name= name

            self.score=score

            def print_score (self) :

            print ('%s: %s'% (self. _ _name,self. _ _score) )

            MeiMei=Student ('hello', 99)

            print (MeiMei.score)

            #直接在子類中使用父類的方法

            print (MeiMei.print_self ()

            ?

            在上面的例子中,子類?Student?繼承了父類?Parent.方法是在類名稱后面的小括號中加上父類的名稱。子類繼承了父類,則有了父類?Parent?的方法?print_self,?從而可以直接在自己的實例名中使用。

            ?

            3)類的多態(tài)。

            如果子類繼承了父類,但是又想改變父類的方法,則這時無須修改父類的方法,只需要在子類中添加相同的方法名就可以起到覆蓋的作用,這就是多態(tài)。

            ?

            #?-*-?coding:utf-8 -*-

            # _ _author_ _='大嬸N72'

            #父類

            class Parent (object) :

            def print_self (self) :

            return"我是父類"

            #子類繼承父類

            class Student (Parent) :

            def _ _init_ _ (self,name,score) :

            self. _ _name= name

            self.score=score

            def print_score (self) :

            print ('%s: %S'% (self. _name,self. _ _score) )

            def print_self (self) :

            return"我是子類"

            MeiMei=Student ('hello', 99)

            print (MeiMei.score)

            #子類的方法覆蓋父類方法

            print (MeiMei.print_self () )

            ?

            以上就是Python類基礎知識學習總結,大家都弄清楚了嗎?


          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线观看免费网站黄 | 亚洲午夜精品视频 | 五月婷婷网 | 五月天亚洲淫淫网 | 欧美乱轮视 |