• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            任我行

            一天一個腳印......
            每日一句:
            posts - 54, comments - 218, trackbacks - 1, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            Python學習(三)

            Posted on 2005-10-11 17:01 任我行 閱讀(845) 評論(0)  編輯 收藏 引用 所屬分類: Python
            繼續Dive Into Python.

            20、定義類
                以FileInfo類的定義為例
            from UserDict import UserDict
            class FileInfo(UserDict):
            "store file metadata"
            def __init__(self, filename=None):
            UserDict.__init__(self)
            self["name"] = filename
                1)父類放在類名后的小括號內;
                2)類可以有文檔字符串
                3)__init__函數在對象被創建后被自動調用的第一個函數,可以指定任何個數的參數。
                4)慣例,__init__應為類中第一個定義的方法,其第一個參數指向類的當前實例的第一個引用,且應命之為self。__init__中要顯式地調用父類的__init__方法。
                5)__init__無返回值。
                6)__init__的定義是可選的,一旦定義必須顯式調用父類的__init__方法。
                7)除了可自由定義的普通的類方法,還有一些可以定義的專用方法。專用方法是在特殊情況下或當使用特別語法時由Python替你調用的,而不是在代碼中直接調用(象普通的方法那樣)。也就是說,python提供了一種方法,可以將非方法調用語法映射到方法調用上。最常見是__getitem__和__setitem__方法。例如,在上例中增加兩個方法的定義,就可以實現方便的取值和賦值:
            def __getitem__(self, key): return self.data[key]
            def __setitem__(self, key, item): self.data[key] = item
            >f = fileinfo.FileInfo("/music/_singles/kairo.mp3")
            >f[“name”]
            >f[“anothername”]=...
                8)__repr__專用函數,返回一個對象的字符串表示。Python用內置函數repr來顯示變量的值,如果repr的參數是某個對象時,那用它的類的__repr__返回對象的字符串表示。
                9)__cmp__專用函數,在比較類實例時被調用。即當作==比較時,被調用。
                10)__len__專用函數,當調用內置函數len(instance)時被調用,對字符串返回字符的個數,對字典返回關鍵字的個數,對序列或列表返回元素個數。對自由定義的類,可自由定義返回的len的值的含義。:)
                11)__delitem__專用函數, 在調用 del instance[key]被調用。
                12)__setitem__,__getitem__,__cmp__,__len__,等方法加入到類的定義中后,可以使任何類看起來象“字典”。還有其它的一些專用方法,可以使類看起來象數值一樣可以對它進行運行。


            21、類的實例化和清除
                1)象調用函數一樣調用類,就可以實例化一個類,傳入的參數是__init__定義的參數(參數是以從右向左的順序傳遞給__init__的,python會自動添加self),返回一個實例對象。
                2)一個類的所有實例,共享類的文檔字符串,
                3)python采用引用計數的技術進行垃圾回收,因而維護著對第一個創建的實例的引用的列表,當計數為0時,實例自動被破壞。
                4)不用顯式的釋放一個實例,因為當變量超出作用域時自動失效,而至其所對應的實例的引用數減一。
                5)在Python中,你不能子類化象字符串、列表和字典的內置數據類型。作為補償,Python附帶了封裝類,可以模擬這些內置的數據類型的行為: UserString,UserList,和 UserDict。
                6)子類中定義的方法覆蓋父類的方法,python不支持函數重載。由此,子類的__init__與父類的__init__的參數序列可以有較大的不同。
                7)python支持數據屬性,即C++中所謂的“數據成員”,對其值的引用需要以"實例名.屬性名"的方式。注意,數據屬性是類實例擁有的屬性,還有一種屬性是叫屬性,是類所擁有的
                8)
            22、當:號后面的塊(即需要縮進的內容)只有一條語句時,可以直接將此語句放在:后面。

            精品久久综合1区2区3区激情| 精品国产VA久久久久久久冰 | 国产成人久久777777| 久久露脸国产精品| 国产69精品久久久久APP下载| 亚洲国产精品无码久久一区二区| 99久久精品免费看国产一区二区三区| 久久久久国产日韩精品网站| 久久国产色AV免费观看| 亚洲?V乱码久久精品蜜桃| 久久天天躁狠狠躁夜夜躁2O2O| 伊人久久综在合线亚洲2019| 久久亚洲精品中文字幕| 日本久久中文字幕| 91亚洲国产成人久久精品| 久久99久久99精品免视看动漫| 久久露脸国产精品| 国产精品热久久毛片| 久久国产乱子伦精品免费强| 日本久久久久亚洲中字幕| 免费无码国产欧美久久18| 九九久久精品国产| 国产精品激情综合久久| 久久天堂电影网| 日本久久久精品中文字幕| 国产精品一久久香蕉国产线看观看| 中文字幕无码av激情不卡久久| 久久男人中文字幕资源站| 激情综合色综合久久综合| 99久久久久| 免费一级欧美大片久久网| 久久精品国产欧美日韩| 欧美一级久久久久久久大片| 久久精品?ⅴ无码中文字幕| 久久精品无码一区二区三区日韩 | 婷婷综合久久中文字幕蜜桃三电影 | 色欲av伊人久久大香线蕉影院| 国产精品99久久久精品无码| 久久久无码精品亚洲日韩蜜臀浪潮 | 久久本道久久综合伊人| 欧美午夜精品久久久久久浪潮|