亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python構(gòu)造方法與析構(gòu)方法的研究

        2019-10-09 03:50:49林觀德
        關(guān)鍵詞:構(gòu)造方法鳴笛面向?qū)ο?/a>

        林觀德

        [摘 ? ? ? ? ? 要] ?Python語(yǔ)言是一種使用非常廣泛的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。構(gòu)造方法和析構(gòu)方法是Python語(yǔ)言面向?qū)ο蟪绦蛟O(shè)計(jì)非常重要的兩個(gè)特殊方法。著重研究構(gòu)造方法和析構(gòu)方法的創(chuàng)建和調(diào)用及構(gòu)造方法和析構(gòu)方法的使用。研究證明:基于Python面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,可以根據(jù)不同的應(yīng)用需求建立適合自己需要的構(gòu)造方法和析構(gòu)方法,這有助于深刻理解類的構(gòu)造方法用于新建對(duì)象的初始化工作與析構(gòu)方法用于撤銷對(duì)象,完成一些無(wú)用數(shù)據(jù)清理的工作。該研究對(duì)編程人員具有一定的指導(dǎo)意義。

        [關(guān) ? ?鍵 ? 詞] ?Python;構(gòu)造方法;析構(gòu)方法;self

        [中圖分類號(hào)] ?TP312 ? ? ? ? ? ? ? ? [文獻(xiàn)標(biāo)志碼] ?A ? ? ? ? ? ?[文章編號(hào)] ?2096-0603(2019)18-0128-02

        一、引言

        面向?qū)ο螅∣bject Oriented)是當(dāng)前程序設(shè)計(jì)關(guān)心的主題,它是軟件開發(fā)方法的主流。在實(shí)際應(yīng)用中,面向?qū)ο笫峭ㄟ^類來實(shí)現(xiàn)面向?qū)ο缶幊痰?。使用面向?qū)ο缶幊虝r(shí)需要深刻理解面向?qū)ο蟮娜筇匦裕ǚ庋b、繼承和多態(tài))。這三大特性共同保證了程序的可擴(kuò)展性需求。由于Python語(yǔ)言的簡(jiǎn)潔性、易讀性以及可擴(kuò)展性,在國(guó)外用Python做科學(xué)計(jì)算的研究機(jī)構(gòu)日益增多,一些知名大學(xué)已經(jīng)采用Python來教授程序設(shè)計(jì)課程。在C語(yǔ)言誕生后,語(yǔ)言的語(yǔ)法含義與字符的排列方式分離開來,曾經(jīng)被認(rèn)為是一種程序語(yǔ)言的進(jìn)步。Python的作者有意地設(shè)計(jì)限制性很強(qiáng)的語(yǔ)法,通過強(qiáng)制程序員縮進(jìn),Python確實(shí)使程序更加清晰和美觀。使不好的編程習(xí)慣都不能通過編譯,因此Python已成為流行的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。本文主要對(duì)構(gòu)造方法和析構(gòu)方法的創(chuàng)建和調(diào)用展開研究。

        二、構(gòu)造方法與析構(gòu)方法

        類似于PHP的構(gòu)造方法和析構(gòu)方法并不需要顯式的定義,實(shí)際上也是存在的。在實(shí)際開發(fā)中,也可以在類中顯式地定義構(gòu)造方法和析構(gòu)方法。這樣就可以在創(chuàng)建實(shí)例對(duì)象時(shí),在構(gòu)造方法里添加上代碼完成對(duì)象的初始化工作;在對(duì)對(duì)象銷毀時(shí),在析構(gòu)方法里添加一些代碼釋放對(duì)象占用的資源。他們只是在這個(gè)對(duì)象生成和銷毀的時(shí)候才會(huì)被調(diào)用。Python提供兩個(gè)非常特殊的方法:構(gòu)造方法__init__()和析構(gòu)方法__del__()。__init__()方法在創(chuàng)建實(shí)例對(duì)象的時(shí)候就會(huì)自動(dòng)調(diào)用該方法,__del__()方法在銷毀對(duì)象時(shí)就會(huì)自動(dòng)調(diào)用該方法。

        (一)構(gòu)造方法的研究

        構(gòu)造方法是一種特殊的方法,是在類實(shí)例化為對(duì)象的時(shí)候最開始執(zhí)行的方法,主要是用來在創(chuàng)建對(duì)象時(shí)初始化對(duì)象。創(chuàng)建好對(duì)象后,檢查類中是否實(shí)現(xiàn)了構(gòu)造器。如果類中沒有實(shí)現(xiàn)

        __init__()方法,就返回新創(chuàng)建的對(duì)象,而實(shí)例化操作也就結(jié)束了。如果實(shí)現(xiàn)了__init__()方法,就調(diào)用這個(gè)特殊方法,新創(chuàng)建的實(shí)例將作為它的第一個(gè)參數(shù)self被傳遞進(jìn)去,整個(gè)過程就好像一個(gè)標(biāo)準(zhǔn)方法的調(diào)用一樣,我們就可以把要預(yù)先初始化的屬性放到這個(gè)方法里面。

        下列代碼是構(gòu)造方法的典型例子。

        class Car: ?#定義類

        def __init__(self): ?#構(gòu)造方法

        self.color= "黑色"

        print("構(gòu)造方法被調(diào)用了")

        def tool(self): ? ? ?#鳴笛

        print("%s的車在鳴笛…"%(self.color))

        car1=Car() ? ?#創(chuàng)建對(duì)象

        car1.tool() ? ?#調(diào)用tool方法

        運(yùn)行上述程序輸出如下結(jié)果:

        "構(gòu)造方法被調(diào)用了"

        "黑色的車在鳴笛…"

        研究結(jié)論:運(yùn)行程序后,輸出“構(gòu)造方法被調(diào)用了”,說明在創(chuàng)建car1對(duì)象的過程中調(diào)用了_init__()構(gòu)造方法。給Car類添加了color屬性并賦值為“黑色”,在tool方法中訪問了color屬性的值。

        上面研究的是沒有帶有參數(shù)的構(gòu)造方法,下面通過實(shí)例來研究帶有參數(shù)的構(gòu)造方法,其代碼如下:

        class Car: ?#定義類

        def __init__(self,color): ?#構(gòu)造方法

        self.color=color

        print("構(gòu)造方法被調(diào)用了")

        def tool(self): ? ? ?#鳴笛

        print("%s的車在鳴笛…"%(self.color))

        car2=Car("紅色") ? ?#創(chuàng)建對(duì)象

        car2.tool() ? #調(diào)用tool方法

        運(yùn)行上述程序輸出如下結(jié)果:

        "構(gòu)造方法被調(diào)用了"

        "黑色的車在鳴笛…"

        研究結(jié)論:運(yùn)行程序后,輸出“構(gòu)造方法被調(diào)用了”,說明在創(chuàng)建car2對(duì)象的過程中調(diào)用了_init__()構(gòu)造方法。本程序定義了帶有參數(shù)的構(gòu)造方法,并把參數(shù)值賦color屬性,保證了color屬性的值隨參數(shù)接收到的值而變化,接著仍在tool方法中請(qǐng)問了color屬性的值。

        (二)析構(gòu)方法的研究

        在__init__()構(gòu)造方法,當(dāng)創(chuàng)建對(duì)象時(shí),Python語(yǔ)言解釋器默認(rèn)調(diào)用了__init__()構(gòu)造方法,當(dāng)刪除一個(gè)對(duì)象來釋放類所占用資源時(shí),Python語(yǔ)言解釋器默認(rèn)調(diào)用另外一個(gè)__del__(1)析構(gòu)方法。

        下列代碼是析構(gòu)方法的典型例子。

        class Car: ?#定義類

        def__init__(self,name,color): ?#構(gòu)造方法

        self.name=name

        self.color=color

        print(""構(gòu)造方法被調(diào)用了"")

        print(self.name,self.color)

        def__del__(self): ? ? ? ? ? #析構(gòu)方法

        print("析構(gòu)方法被調(diào)用了")

        def tool(self): ? ? ?#鳴笛

        print("%s%s的車在鳴笛…"%(self.color,self.name))

        car3=Car("比來迪","紅色") ? ?#創(chuàng)建對(duì)象

        car3.tool()#調(diào)用tool方法

        運(yùn)行上述程序輸出如下結(jié)果:

        "構(gòu)造方法被調(diào)用了"

        "比來迪紅色"

        "紅色比來迪的車在鳴笛…"

        研究結(jié)論:運(yùn)行程序后,輸出“構(gòu)造方法被調(diào)用了”,說明在創(chuàng)建car3對(duì)象的過程中調(diào)用了_init__()構(gòu)造方法。本程序定義了帶有參數(shù)的構(gòu)造方法中,設(shè)置了name和color屬性的初始值,在__del__()方法中增加了輸出語(yǔ)句,然后使用了自定義構(gòu)造方法創(chuàng)建了Car類的對(duì)象car3。運(yùn)行程序時(shí)輸出上述結(jié)果,從結(jié)果分析,本程序仍沒有調(diào)用析構(gòu)方法。

        在上述程序的最后加上刪除對(duì)象car3,輸出結(jié)果又如何,其程序代碼如下:

        class Car: ?#定義類

        def __init__(self,name,color): ?#構(gòu)造方法

        self.name=name

        self.color=color

        print("__init__")

        print(self.name,self.color)

        def __del__(self): ? ? ? ? ? #析構(gòu)方法

        print("析構(gòu)方法被調(diào)用了")

        def tool(self): ? ? ? ? ?#鳴笛

        print("%s%s的車在鳴笛…"%(self.color,self.name))

        car3=Car("比來迪","紅色") ? ?#創(chuàng)建對(duì)象

        car3.tool()#調(diào)用tool方法

        del car3 ? ? ? ? ? ? ? ? ? ?# 刪除對(duì)象

        運(yùn)行上述程序輸出如下結(jié)果:

        "構(gòu)造方法被調(diào)用了"

        "比來迪紅色"

        "紅色比來迪的車在鳴笛…"

        "析構(gòu)方法被調(diào)用了"

        研究結(jié)論:運(yùn)行程序后,從結(jié)果分析,“構(gòu)造方法被調(diào)用了”,當(dāng)刪除car3對(duì)象時(shí)也調(diào)用了析構(gòu)方法,從而輸出了“析構(gòu)方法被調(diào)用了”。這樣可以用來釋放內(nèi)存空間,對(duì)象釋放后就不能再進(jìn)行訪問了。

        (三)self的研究

        self(相當(dāng)于PHP,Java,C++中的this對(duì)象)代表類的實(shí)例對(duì)象,而非類本身。類的方法與普通的函數(shù)只有一個(gè)特殊的區(qū)別,在類的方法必須有個(gè)額外的第一個(gè)參數(shù),這個(gè)參數(shù)名稱是self。但在調(diào)用這個(gè)方法的時(shí)候不必為這個(gè)參數(shù)賦值。Python解釋器會(huì)把這個(gè)對(duì)象作為第1個(gè)參數(shù)付給self,開發(fā)者只需要傳遞后面的參數(shù)就可以了。self代表當(dāng)前對(duì)象的地址。

        下面通過一個(gè)案例來研究self使用。

        class Car: ?#定義類

        def __init__(self,new_color): ?#構(gòu)造方法

        self.color=new_color

        def print_color(self):

        print("顏色為:%s"%self.color)

        car_white=Car("白色")

        car_white.print_color()

        car_black=Car("黑色")

        car_black.print_color()

        運(yùn)行上術(shù)程序輸出如下結(jié)果:

        "顏色為:白色"

        "顏色為:黑色"

        研究結(jié)論:在本例中定義了一個(gè)Car類,在__init__()方法中,通過參數(shù)設(shè)置color屬性的初值,然后在print_color方法中獲取了color的值。在程序的第6行,創(chuàng)建了一個(gè)Car類的對(duì)象car_white,設(shè)置屬性的默認(rèn)值為“白色”,并讓car_white指向了該對(duì)象所指的內(nèi)存地址。然后car_white調(diào)用了print_color方法,默認(rèn)會(huì)把car_white引用的內(nèi)在地址賦值給self,這時(shí)self也指向了這塊內(nèi)在地址,執(zhí)行第5行輸出語(yǔ)句會(huì)訪問car_white的color屬性的值,所以程序輸出“白色”。同理,當(dāng)car_black調(diào)用print_color方法,默認(rèn)會(huì)把car_black引用的內(nèi)在地址賦值給self,這時(shí)self也指向了這塊內(nèi)在地址,執(zhí)行第5行輸出語(yǔ)句會(huì)訪問car_black的color屬性的值,所以程序輸出“黑色”。

        三、結(jié)語(yǔ)

        本文著重研究了Python語(yǔ)言類的定義、類的構(gòu)造方法與析構(gòu)方法相關(guān)概念及其多種的表達(dá)形式,根據(jù)不同的應(yīng)用需求建立適合自己需要的構(gòu)造方法和析構(gòu)方法。繼而進(jìn)一步研究了不同形式的構(gòu)造方法與析構(gòu)方法的使用,并指出顯式的調(diào)用構(gòu)造方法與析構(gòu)方法所帶來的后果。這有助于學(xué)習(xí)者深刻理解Python的構(gòu)造方法與析構(gòu)方法,對(duì)學(xué)習(xí)Python語(yǔ)言的編程者提高Python編程能力有很大的參考價(jià)值。

        參考文獻(xiàn):

        [1]逄菲.基于Python的分布式網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2018(23):25.

        [2]狄博,王曉丹.基于Python語(yǔ)言的面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)[J].計(jì)算機(jī)工程與科學(xué),2014(S1).

        [3]王明松,錢靜媛.基于Python語(yǔ)言的面向?qū)ο笳n程實(shí)踐教學(xué)探討[J].電腦知識(shí)與技術(shù),2017(4).

        [4]謝克武.大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)[J].電子制作,2017(9).

        [5]賈棋然.基于Python專用型網(wǎng)絡(luò)爬蟲的設(shè)計(jì)及實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2017(12).

        [6]趙英良.Python程序設(shè)計(jì)[M].北京:人民郵電出版社,2016.

        [7]董付國(guó).Python程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2016.

        編輯 陳鮮艷

        猜你喜歡
        構(gòu)造方法鳴笛面向?qū)ο?/a>
        DC-DC變換器分層級(jí)構(gòu)造方法
        朋友圈
        面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開發(fā)
        面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
        《夢(mèng)溪筆談》“甲子納音”構(gòu)造方法的數(shù)學(xué)分析
        幾乎最佳屏蔽二進(jìn)序列偶構(gòu)造方法
        面向?qū)ο骔eb開發(fā)編程語(yǔ)言的的評(píng)估方法
        面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
        河南科技(2014年10期)2014-02-27 14:09:03
        漢語(yǔ)新術(shù)語(yǔ)構(gòu)造方法的優(yōu)先選擇
        加拿大司機(jī)很少鳴笛
        无码国产色欲xxxx视频| 日韩av在线不卡一区二区三区 | 久久精品成人91一区二区| 蜜桃av一区二区三区久久| 国产一区二区视频免费在| 免费无码a片一区二三区| 狠狠久久亚洲欧美专区| 久久HEZYO色综合| 蜜桃精品视频一二三区| 亚洲无线一二三四区手机| 国产精品国产午夜免费看福利| 免费国产黄线在线播放| 女人被男人躁得好爽免费视频| 国产精品人妻一码二码尿失禁| 国产AV无码一区精品天堂 | 日本一区二区不卡在线| 2019日韩中文字幕mv| 乱码午夜-极品国产内射| 无国产精品白浆免费视| 中文字幕第一页亚洲观看| 人妻熟女中文字幕av| 色又黄又爽18禁免费网站现观看| 99精品国产99久久久久久97| 亚洲阿v天堂2018在线观看| 日本中文字幕一区二区在线观看| 在线精品首页中文字幕亚洲| 加勒比一本heyzo高清视频| 久久久久久久久888| 国产精品久久久久亚洲| 久久精品国产亚洲av一般男女| 亚洲色成人www永久在线观看| 人妻少妇看a偷人无码精品| 中文字幕乱码人妻无码久久麻豆| 亚洲精品在线观看一区二区 | 无码福利写真片视频在线播放| 啪啪无码人妻丰满熟妇| 日本97色视频日本熟妇视频| 国产精品久免费的黄网站| aaaaa级少妇高潮大片免费看| ZZIJZZIJ亚洲日本少妇| 网红尤物泛滥白浆正在播放|