999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python構造方法與析構方法的研究

2019-10-09 03:50:49林觀德
現代職業教育·職業培訓 2019年6期
關鍵詞:程序方法

林觀德

[摘 ? ? ? ? ? 要] ?Python語言是一種使用非常廣泛的面向對象的程序設計語言。構造方法和析構方法是Python語言面向對象程序設計非常重要的兩個特殊方法。著重研究構造方法和析構方法的創建和調用及構造方法和析構方法的使用。研究證明:基于Python面向對象的程序設計語言,可以根據不同的應用需求建立適合自己需要的構造方法和析構方法,這有助于深刻理解類的構造方法用于新建對象的初始化工作與析構方法用于撤銷對象,完成一些無用數據清理的工作。該研究對編程人員具有一定的指導意義。

[關 ? ?鍵 ? 詞] ?Python;構造方法;析構方法;self

[中圖分類號] ?TP312 ? ? ? ? ? ? ? ? [文獻標志碼] ?A ? ? ? ? ? ?[文章編號] ?2096-0603(2019)18-0128-02

一、引言

面向對象(Object Oriented)是當前程序設計關心的主題,它是軟件開發方法的主流。在實際應用中,面向對象是通過類來實現面向對象編程的。使用面向對象編程時需要深刻理解面向對象的三大特性(封裝、繼承和多態)。這三大特性共同保證了程序的可擴展性需求。由于Python語言的簡潔性、易讀性以及可擴展性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經采用Python來教授程序設計課程。在C語言誕生后,語言的語法含義與字符的排列方式分離開來,曾經被認為是一種程序語言的進步。Python的作者有意地設計限制性很強的語法,通過強制程序員縮進,Python確實使程序更加清晰和美觀。使不好的編程習慣都不能通過編譯,因此Python已成為流行的面向對象的程序設計語言。本文主要對構造方法和析構方法的創建和調用展開研究。

二、構造方法與析構方法

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

(一)構造方法的研究

構造方法是一種特殊的方法,是在類實例化為對象的時候最開始執行的方法,主要是用來在創建對象時初始化對象。創建好對象后,檢查類中是否實現了構造器。如果類中沒有實現

__init__()方法,就返回新創建的對象,而實例化操作也就結束了。如果實現了__init__()方法,就調用這個特殊方法,新創建的實例將作為它的第一個參數self被傳遞進去,整個過程就好像一個標準方法的調用一樣,我們就可以把要預先初始化的屬性放到這個方法里面。

下列代碼是構造方法的典型例子。

class Car: ?#定義類

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

self.color= "黑色"

print("構造方法被調用了")

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

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

car1=Car() ? ?#創建對象

car1.tool() ? ?#調用tool方法

運行上述程序輸出如下結果:

"構造方法被調用了"

"黑色的車在鳴笛…"

研究結論:運行程序后,輸出“構造方法被調用了”,說明在創建car1對象的過程中調用了_init__()構造方法。給Car類添加了color屬性并賦值為“黑色”,在tool方法中訪問了color屬性的值。

上面研究的是沒有帶有參數的構造方法,下面通過實例來研究帶有參數的構造方法,其代碼如下:

class Car: ?#定義類

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

self.color=color

print("構造方法被調用了")

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

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

car2=Car("紅色") ? ?#創建對象

car2.tool() ? #調用tool方法

運行上述程序輸出如下結果:

"構造方法被調用了"

"黑色的車在鳴笛…"

研究結論:運行程序后,輸出“構造方法被調用了”,說明在創建car2對象的過程中調用了_init__()構造方法。本程序定義了帶有參數的構造方法,并把參數值賦color屬性,保證了color屬性的值隨參數接收到的值而變化,接著仍在tool方法中請問了color屬性的值。

(二)析構方法的研究

在__init__()構造方法,當創建對象時,Python語言解釋器默認調用了__init__()構造方法,當刪除一個對象來釋放類所占用資源時,Python語言解釋器默認調用另外一個__del__(1)析構方法。

下列代碼是析構方法的典型例子。

class Car: ?#定義類

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

self.name=name

self.color=color

print(""構造方法被調用了"")

print(self.name,self.color)

def__del__(self): ? ? ? ? ? #析構方法

print("析構方法被調用了")

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

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

car3=Car("比來迪","紅色") ? ?#創建對象

car3.tool()#調用tool方法

運行上述程序輸出如下結果:

"構造方法被調用了"

"比來迪紅色"

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

研究結論:運行程序后,輸出“構造方法被調用了”,說明在創建car3對象的過程中調用了_init__()構造方法。本程序定義了帶有參數的構造方法中,設置了name和color屬性的初始值,在__del__()方法中增加了輸出語句,然后使用了自定義構造方法創建了Car類的對象car3。運行程序時輸出上述結果,從結果分析,本程序仍沒有調用析構方法。

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

class Car: ?#定義類

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

self.name=name

self.color=color

print("__init__")

print(self.name,self.color)

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

print("析構方法被調用了")

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

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

car3=Car("比來迪","紅色") ? ?#創建對象

car3.tool()#調用tool方法

del car3 ? ? ? ? ? ? ? ? ? ?# 刪除對象

運行上述程序輸出如下結果:

"構造方法被調用了"

"比來迪紅色"

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

"析構方法被調用了"

研究結論:運行程序后,從結果分析,“構造方法被調用了”,當刪除car3對象時也調用了析構方法,從而輸出了“析構方法被調用了”。這樣可以用來釋放內存空間,對象釋放后就不能再進行訪問了。

(三)self的研究

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

下面通過一個案例來研究self使用。

class Car: ?#定義類

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

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()

運行上術程序輸出如下結果:

"顏色為:白色"

"顏色為:黑色"

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

三、結語

本文著重研究了Python語言類的定義、類的構造方法與析構方法相關概念及其多種的表達形式,根據不同的應用需求建立適合自己需要的構造方法和析構方法。繼而進一步研究了不同形式的構造方法與析構方法的使用,并指出顯式的調用構造方法與析構方法所帶來的后果。這有助于學習者深刻理解Python的構造方法與析構方法,對學習Python語言的編程者提高Python編程能力有很大的參考價值。

參考文獻:

[1]逄菲.基于Python的分布式網絡爬蟲系統的設計與實現[J].電子技術與軟件工程,2018(23):25.

[2]狄博,王曉丹.基于Python語言的面向對象程序設計課程教學[J].計算機工程與科學,2014(S1).

[3]王明松,錢靜媛.基于Python語言的面向對象課程實踐教學探討[J].電腦知識與技術,2017(4).

[4]謝克武.大數據環境下基于python的網絡爬蟲技術[J].電子制作,2017(9).

[5]賈棋然.基于Python專用型網絡爬蟲的設計及實現[J].電腦知識與技術,2017(12).

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

[7]董付國.Python程序設計[M].北京:清華大學出版社,2016.

編輯 陳鮮艷

猜你喜歡
程序方法
學習方法
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 精品三级在线| 为你提供最新久久精品久久综合| 精品视频福利| 日韩在线播放中文字幕| 国产69精品久久| 国产一区二区三区精品欧美日韩| 免费Aⅴ片在线观看蜜芽Tⅴ| 色播五月婷婷| 国产精品久久自在自线观看| 久久99精品久久久久久不卡| 国产精品自在线拍国产电影| 欧美一级大片在线观看| 国产呦视频免费视频在线观看| www.91中文字幕| 国产精品一线天| 操国产美女| 911亚洲精品| 国产精品无码一区二区桃花视频| 99视频精品全国免费品| 亚洲午夜国产片在线观看| 国产成人高清精品免费5388| 中文字幕亚洲综久久2021| 国产在线小视频| 性喷潮久久久久久久久| 欧美日韩中文国产va另类| 中文国产成人精品久久一| 一区二区在线视频免费观看| 潮喷在线无码白浆| 无码有码中文字幕| 国产一二视频| 欧美a级完整在线观看| 久久久久夜色精品波多野结衣| 原味小视频在线www国产| 99视频在线免费| 成人av手机在线观看| 最新午夜男女福利片视频| 色窝窝免费一区二区三区| 欧美 亚洲 日韩 国产| 久操线在视频在线观看| 一级毛片免费的| 国产免费久久精品99re不卡| 性喷潮久久久久久久久| 成人福利视频网| 亚洲国产精品成人久久综合影院| 欧美中文一区| 99热这里只有免费国产精品| 精品一区二区久久久久网站| 亚洲色图综合在线| 欧美va亚洲va香蕉在线| 99爱在线| 狠狠亚洲婷婷综合色香| 毛片久久久| 亚洲色图综合在线| 精品国产免费观看| 精品久久高清| 91在线精品麻豆欧美在线| 激情综合网址| 91青青草视频在线观看的| 99热最新网址| 99精品视频在线观看免费播放| 国产91高跟丝袜| 丁香六月激情婷婷| 亚洲无码A视频在线| 91偷拍一区| 国产啪在线91| 久久永久视频| 国产成人AV综合久久| 免费一级毛片在线观看| 亚洲欧美成人在线视频| 国产视频欧美| 第一区免费在线观看| 欧美亚洲另类在线观看| 国产sm重味一区二区三区| 亚洲高清中文字幕在线看不卡| 91精品aⅴ无码中文字字幕蜜桃| 国产噜噜在线视频观看| 精品国产自在现线看久久| 亚洲三级视频在线观看| 日本午夜影院| 欧美视频免费一区二区三区| 欧美亚洲一区二区三区导航| 亚洲综合色婷婷|