新聞中心
類的名稱一般用大寫字母開頭,這是慣例。當然,如果故意不遵循此慣例,也未嘗不可,但是,會給別人閱讀乃至于自己以后閱讀帶來麻煩。既然大家都是靠右走的,你就別非要在路中間睡覺了。

成都創(chuàng)新互聯(lián)主打移動網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護、域名申請、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再決定采用什么樣的設(shè)計。最后,要實現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計,我們還會規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
接下來,一般都要編寫構(gòu)造函數(shù),在寫這個函數(shù)之前,先解釋一下什么是構(gòu)造函數(shù)。
class Person: def __init__(self, name, lang, website): self.name = name self.lang = lang self.website = website
上面的類中,首先呈現(xiàn)出來的是一個名為:init()的函數(shù),注意,這個函數(shù)是以兩個下劃線開始,然后是init,最后以兩個下劃線結(jié)束。這是一個函數(shù),就跟我們此前學習過的函數(shù)一樣的函數(shù)。但是,這個函數(shù)又有點奇特,它的命名是用“__”開始和結(jié)束。
請看官在這里要明確一個基本概念,類就是一種對象類型,和跟前面學習過的數(shù)值、字符串、列表等等類型一樣。比如這里構(gòu)建的類名字叫做Person,那么就是我們要試圖建立一種對象類型,這種類型被稱之為Person,就如同有一種對象類型是list一樣。
在構(gòu)建Person類的時候,首先要做的就是對這種類型進行初始化,也就是要說明這種類型的基本結(jié)構(gòu),一旦這個類型的對象被調(diào)用了,第一件事情就是要運行這個類型的基本結(jié)構(gòu),也就是類Person的基本結(jié)構(gòu)。就好比我們每個人,在頭腦中都有關(guān)于“人”這樣一個對象類型(對應(yīng)著類),一旦遇到張三(張三是一個具體人),我們首先運行“人”這個類的基本結(jié)構(gòu):一個鼻子兩只眼,鼻子下面一張嘴。如果張三符合這個基本機構(gòu),我們不會感到驚詫(不報錯),如果張三不符合這個基本結(jié)構(gòu)(比如三只眼睛),我們就會感到驚詫(報錯了)。
由于類是我們自己構(gòu)造的,那么基本結(jié)構(gòu)也是我們自己手動構(gòu)造的。在類中,基本結(jié)構(gòu)是寫在init()這個函數(shù)里面。故這個函數(shù)稱為構(gòu)造函數(shù),擔負著對類進行初始化的任務(wù)。
還是回到Person這個類,如果按照上面的代碼,寫好了,是不是init()就運行起來了呢?不是!這時候還沒有看到張三呢,必須看到張三才能運行。所謂看到張三,看到張三這樣一個具體的實實在在的人,此動作,在python中有一個術(shù)語,叫做實例化。當類Person實例化后立刻運行init()函數(shù)。
上面關(guān)于類的講解很形象生動!
#!/usr/bin/env python
#coding:utf-8
class Person:
def __init__(self, name, lang, website):
self.name = name
self.lang = lang
self.website = website
info = Person("qiwsir","python","qiwsir.github.io") #實例化Person
print "info.name=",info.name
print "info.lang=",info.lang
print "info.website=",info.website
#上面代碼的運行結(jié)果:
info.name= qiwsir
info.lang= python
info.website= qiwsir.github.io
在上面的代碼中,建立的類Person,構(gòu)造函數(shù)申明了這個類的基本結(jié)構(gòu):name,lang,website。
注意觀察:info=Person(“qiwsir”,”python”,”qiwsir.github.io”),這句話就是將類Person實例化了。也就是在內(nèi)存中創(chuàng)建了一個對象,這個對象的類型是Person類型,這個Person類型是什么樣子的呢?就是init()所構(gòu)造的那樣。在實例化時,必須通過參數(shù)傳入具體的數(shù)據(jù):name=”qiwsir”,lang=”python”,website=”qiwsir.github.io”。這樣在內(nèi)存中就存在了一個對象,這個對象的類型是Person,然后通過賦值語句,與變量info建立引用關(guān)系。請看官回憶以前已經(jīng)講述過的變量和對象的引用關(guān)系。
類和實例
?“類提供默認行為,是實例的工廠”,我覺得這句原話非常經(jīng)典,一下道破了類和實例的關(guān)系??瓷厦娲a,體會一下,是不是這個理?所謂工廠,就是可以用同一個模子做出很多具體的產(chǎn)品。類就是那個模子,實例就是具體的產(chǎn)品。所以,實例是程序處理的實際對象。
?類是由一些語句組成,但是實例,是通過調(diào)用類生成,每次調(diào)用一個類,就得到這個類的新的實例。
?對于類的:class Person,class是一個可執(zhí)行的語句。如果執(zhí)行,就得到了一個類對象,并且將這個類對象賦值給對象名(比如Person)。
self的作用
細心的看官可能注意到了,在構(gòu)造函數(shù)中,第一個參數(shù)是self,但是在實例化的時候,似乎沒有這個參數(shù)什么事兒,那么self是干什么的呢?
self是一個很神奇的參數(shù)。
在Person實例化的過程中,數(shù)據(jù)”qiwsir”,”python”,”qiwsir.github.io”通過構(gòu)造函數(shù)(init())的參數(shù)已經(jīng)存入到內(nèi)存中,并且這些數(shù)據(jù)以Person類型的面貌存在組成一個對象,這個對象和變量info建立的引用關(guān)系。這個過程也可說成這些數(shù)據(jù)附加到一個實例上。這樣就能夠以:object.attribute的形式,在程序中任何地方調(diào)用某個數(shù)據(jù),例如上面的程序中以info.name得到”qiwsir”這個數(shù)據(jù)。這種調(diào)用方式,在類和實例中經(jīng)常使用,點號“.”后面的稱之為類或者實例的屬性。
當前名稱:創(chuàng)新互聯(lián)Python教程:python中實例化是什么
文章路徑:http://www.dlmjj.cn/article/dhsdedp.html


咨詢
建站咨詢
