創(chuàng)建類的方法比較簡單,如下:

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、雨湖網(wǎng)絡(luò)推廣、成都微信小程序、雨湖網(wǎng)絡(luò)營銷、雨湖企業(yè)策劃、雨湖品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供雨湖建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:chinadenli.net
class Person:
注意,類的名稱一般用大寫字母開頭,這是慣例。當(dāng)然,如果故意不遵循此慣例,也未嘗不可,但是,會給別人閱讀乃至于自己以后閱讀帶來麻煩。既然大家都是靠右走的,你就別非要在路中間睡覺了。
接下來,一般都要編寫構(gòu)造函數(shù),在寫這個(gè)函數(shù)之前,先解釋一下什么是構(gòu)造函數(shù)。
復(fù)制代碼 代碼如下:
class Person:
def __init__(self, name, lang, website):
self.name = name
self.lang = lang
self.website = website
上面的類中,首先呈現(xiàn)出來的是一個(gè)名為:__init__()的函數(shù),注意,這個(gè)函數(shù)是以兩個(gè)下劃線開始,然后是init,最后以兩個(gè)下劃線結(jié)束。這是一個(gè)函數(shù),就跟我們此前學(xué)習(xí)過的函數(shù)一樣的函數(shù)。但是,這個(gè)函數(shù)又有點(diǎn)奇特,它的命名是用“__”開始和結(jié)束。
請看官在這里要明確一個(gè)基本概念,類就是一種對象類型,和跟前面學(xué)習(xí)過的數(shù)值、字符串、列表等等類型一樣。比如這里構(gòu)建的類名字叫做Person,那么就是我們要試圖建立一種對象類型,這種類型被稱之為Person,就如同有一種對象類型是list一樣。
在構(gòu)建Person類的時(shí)候,首先要做的就是對這種類型進(jìn)行初始化,也就是要說明這種類型的基本結(jié)構(gòu),一旦這個(gè)類型的對象被調(diào)用了,第一件事情就是要運(yùn)行這個(gè)類型的基本結(jié)構(gòu),也就是類Person的基本結(jié)構(gòu)。就好比我們每個(gè)人,在頭腦中都有關(guān)于“人”這樣一個(gè)對象類型(對應(yīng)著類),一旦遇到張三(張三是一個(gè)具體人),我們首先運(yùn)行“人”這個(gè)類的基本結(jié)構(gòu):一個(gè)鼻子兩只眼,鼻子下面一張嘴。如果張三符合這個(gè)基本機(jī)構(gòu),我們不會感到驚詫(不報(bào)錯(cuò)),如果張三不符合這個(gè)基本結(jié)構(gòu)(比如三只眼睛),我們就會感到驚詫(報(bào)錯(cuò)了)。
由于類是我們自己構(gòu)造的,那么基本結(jié)構(gòu)也是我們自己手動(dòng)構(gòu)造的。在類中,基本結(jié)構(gòu)是寫在__init__()這個(gè)函數(shù)里面。故這個(gè)函數(shù)稱為構(gòu)造函數(shù),擔(dān)負(fù)著對類進(jìn)行初始化的任務(wù)。
還是回到Person這個(gè)類,如果按照上面的代碼,寫好了,是不是__init__()就運(yùn)行起來了呢?不是!這時(shí)候還沒有看到張三呢,必須看到張三才能運(yùn)行。所謂看到張三,看到張三這樣一個(gè)具體的實(shí)實(shí)在在的人,此動(dòng)作,在python中有一個(gè)術(shù)語,叫做實(shí)例化。當(dāng)類Person實(shí)例化后立刻運(yùn)行__init__()函數(shù)。
__init__屬于魔法函數(shù)的一種,讓我們來看一下它的前世今生吧。后面介紹了其他的魔法函數(shù):__ str__()、__ new__()、__ unicode__()、__ call__()、__ len__()、__repr__()等等
所謂魔法函數(shù)(Magic Methods),是Python的一種高級語法,允許你在類中自定義函數(shù)(函數(shù)名格式一般為__xx__),并綁定到類的特殊方法中。比如在類A中自定義__str__()函數(shù),則在調(diào)用str(A())時(shí),會自動(dòng)調(diào)用__str__()函數(shù),并返回相應(yīng)的結(jié)果。在我們平時(shí)的使用中,可能經(jīng)常使用__init__函數(shù)(構(gòu)造函數(shù))和__del__函數(shù)(析構(gòu)函數(shù)),其實(shí)這也是魔法函數(shù)的一種。
Python中以雙下劃線(__xx__)開始和結(jié)束的函數(shù)(不可自己定義)為魔法函數(shù)。
調(diào)用類實(shí)例化的對象的方法時(shí)自動(dòng)調(diào)用魔法函數(shù)。
在自己定義的類中,可以實(shí)現(xiàn)之前的內(nèi)置函數(shù)。
在該對象不在使用的時(shí)候自動(dòng)調(diào)用,怎么說呢,?就是沒有引用指向該對象的時(shí)候。
Python編程中類的概念可以比作是某種類型集合的描述,如“人類”可以被看作一個(gè)類,然后用人類這個(gè)類定義出每個(gè)具體的人——你、我、他等作為其對象。類還擁有屬性和功能,屬性即類本身的一些特性,如人類有名字、身高和體重等屬性,而具體值則會根據(jù)每個(gè)人的不同;功能則是類所能實(shí)現(xiàn)的行為,如人類擁有吃飯、走路和睡覺等功能
類定義一般為:
class 類名[(父類名)]:[成員函數(shù)及成員變量],
類名為這個(gè)類的名稱,而父類名為可選,但定義父類名后,子類則擁有父類的相應(yīng)屬性和方法。在用類定義成對象時(shí),會先調(diào)用__init__構(gòu)造函數(shù),以初始化對象的各屬性,類的各屬性(成員變量)均可以在構(gòu)造函數(shù)中定義,定義時(shí)只要加上對象指針就好。而在對象銷毀時(shí),則會調(diào)用__del__析構(gòu)函數(shù),定義類的成員函數(shù)時(shí),必須默認(rèn)一個(gè)變量(類似于C++中的this指針)代表類定義的對象本身,這個(gè)變量的名稱可自行定義,一般使用self變量表示
基類和父類也是差不多的意思。
超類的叫法跟super關(guān)鍵詞有關(guān),其實(shí)就是如果當(dāng)前類中不存在的方法或者變量,回按照繼承鏈一直往上回溯,直到object類。
實(shí)例化就是從類創(chuàng)建對象。
類的概念:
類 Class: 用來描述具體相同的屬性和方法的對象的集合。定義了該集合中每個(gè)對象所共有的屬性和方法。對象是類的示例。
類變量:類變量在整個(gè)實(shí)例化的對象中是公用的。類變量定義在類中且在函數(shù)體之外。類變量通常不作為實(shí)例變量使用。
實(shí)例變量:定義在方法中的變量,只作用于當(dāng)前實(shí)例的類。
數(shù)據(jù)成員:類變量或者實(shí)例變量用于處理類及其實(shí)例對象的相關(guān)數(shù)據(jù)。
方法:類中定義的函數(shù)。在類內(nèi)部,使用 def 關(guān)鍵字來定義一個(gè)方法,與一般函數(shù)定義不同,類方法必須包含參數(shù) self, 且為第一個(gè)參數(shù),self 代表的是類的實(shí)例。
構(gòu)造函數(shù):即__init()__,特殊的方法,在對象創(chuàng)建的時(shí)候被自動(dòng)調(diào)用。
析構(gòu)函數(shù):即__del()__,特殊的方法,在對象被銷毀時(shí)被自動(dòng)調(diào)用。
實(shí)例化:創(chuàng)建一個(gè)類的實(shí)例,類的具體對象。就是將創(chuàng)建的類賦值給另一個(gè)變量。理解為賦值即可,a = class(),這個(gè)過程,就叫做實(shí)例化
對象:通過類定義的數(shù)據(jù)結(jié)構(gòu)實(shí)例。對象包括兩個(gè)數(shù)據(jù)成員(類變量和實(shí)例變量)和方法。
繼承:即一個(gè)派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個(gè)派生類的對象作為一個(gè)基類對象對待。例如,有這樣一個(gè)設(shè)計(jì):一個(gè)Dog類型的對象派生自Animal類,這是模擬”是一個(gè)(is-a)”關(guān)系(例圖,Dog是一個(gè)Animal)。
方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其 進(jìn)行改寫,這個(gè)過程叫方法的覆蓋(override),也稱為方法的重寫。
————————————————
原文鏈接:
網(wǎng)頁鏈接
分享名稱:python析構(gòu)函數(shù)調(diào)用,python中的析構(gòu)函數(shù)
URL標(biāo)題:http://chinadenli.net/article35/dseeipi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、App開發(fā)、企業(yè)建站、網(wǎng)站內(nèi)鏈、自適應(yīng)網(wǎng)站、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)