真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python面向?qū)ο缶幊淘趺磳崿F(xiàn)

這篇文章主要介紹“python面向?qū)ο缶幊淘趺磳崿F(xiàn)”,在日常操作中,相信很多人在python面向?qū)ο缶幊淘趺磳崿F(xiàn)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python面向?qū)ο缶幊淘趺磳崿F(xiàn)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鹽田免費建站歡迎大家使用!

對象的概念

”面向?qū)ο蟆暗暮诵氖恰皩ο蟆倍郑鴮ο蟮木柙谟凇罢稀?/p>

所有的程序都是由”數(shù)據(jù)”與“功能“組成,因而編寫程序的本質(zhì)就是定義出一系列的數(shù)據(jù),然后定義出一系列的功能來對數(shù)據(jù)進行操作。在學(xué)習(xí)”對象“之前,程序中的數(shù)據(jù)與功能是分離開的,如下

數(shù)據(jù):
name = cjk
age = 18
功能:
def tell_info(name, age)
     print('<%s:%:%s>' %(name, age))
 
tell_info(name,age)

在學(xué)習(xí)了“對象”之后,我們就有了一個容器,該容器可以盛放數(shù)據(jù)與功能,所以我們可以說:對象是把數(shù)據(jù)與功能整合到一起的產(chǎn)物,或者說”對象“就是一個盛放數(shù)據(jù)與功能的容器/箱子/盒子。

如果把”數(shù)據(jù)“比喻為”球衣“、”秋衣“、”襪子“等化妝所需要的原材料;把”功能“比喻”球衣“、”秋衣“、”襪子“所需要的工具,那么”對象“就是一個收納盒,彩收納盒可以把”原材料“與”工具“都裝到一起

在了解了對象的基本概念之后,理解面向?qū)ο蟮木幊谭绞骄拖鄬唵魏芏嗔耍嫦驅(qū)ο缶幊叹褪且斐鲆粋€個的對象,把原本分散開的相關(guān)數(shù)據(jù)與功能整合到一個個的對象里,這么做既方便使用,也可以提高程序的解耦合程度,進而提升了程序的可擴展性(需要強調(diào)的是,軟件質(zhì)量屬性包含很多方面,面向?qū)ο蠼鉀Q的僅僅只是擴展性問題)

python面向?qū)ο缶幊淘趺磳崿F(xiàn)

類與對象

類即類別/種類,是面向?qū)ο蠓治龊驮O(shè)計的基石,如果多個對象有相似的數(shù)據(jù)與功能,那么該多個對象就屬于同一種類。有了類的好處是:我們可以把同一類對象相同的數(shù)據(jù)與功能存放到類里,而無需每個對象都重復(fù)存一份,這樣每個對象里只需存自己獨有的數(shù)據(jù)即可,極大地節(jié)省了空間。所以,如果說對象是用來存放數(shù)據(jù)與功能的容器,那么類則是用來存放多個對象相同的數(shù)據(jù)與功能的容器。

python面向?qū)ο缶幊淘趺磳崿F(xiàn)

綜上所述,雖然我們是先介紹對象后介紹類,但是需要強調(diào)的是:在程序中,必須要事先定義類,然后再調(diào)用類產(chǎn)生對象(調(diào)用類拿到的返回值就是對象)。產(chǎn)生對象的類與對象之間存在關(guān)聯(lián),這種關(guān)聯(lián)指的是:對象可以訪問到類中共有的數(shù)據(jù)與功能,所以類中的內(nèi)容仍然是屬于對象的,類只不過是一種節(jié)省空間、減少代碼冗余的機制,面向?qū)ο缶幊套罱K的核心仍然是去使用對象。

在了解了類與對象這兩大核心概念之后,我們就可以來介紹一下面向?qū)ο缶幊汤病?/p>

面向?qū)ο缶幊?/h5>
類的定義與實例化

我們以開發(fā)一個選課系統(tǒng)為例,來簡單介紹基于面向?qū)ο蟮乃枷肴绾尉帉懗绦?/p>

面向?qū)ο蟮幕舅悸肪褪前殉绦蛑幸玫降?、相關(guān)聯(lián)的數(shù)據(jù)與功能整合到對象里,然后再去使用,但程序中要用到的數(shù)據(jù)以及功能那么多,如何找到相關(guān)連的呢?我需要先提取選課系統(tǒng)里的角色:學(xué)生、老師、課程等,然后顯而易見的是:學(xué)生有學(xué)生相關(guān)的數(shù)據(jù)于功能,老師有老師相關(guān)的數(shù)據(jù)與功能,我們單以學(xué)生為例,

# 學(xué)生的數(shù)據(jù)有
學(xué)校
名字
年齡
性別

# 學(xué)生的功能有
選課

詳細(xì)的

# 學(xué)生1:
    數(shù)據(jù):
        學(xué)校=清華大學(xué)
        姓名=王大錘
        性別=男
        年齡=28
    功能:
        選課

# 學(xué)生2:
    數(shù)據(jù):
        學(xué)校=清華大學(xué)
        姓名=王二錘
        性別=女
        年齡=18
    功能:
        選課

# 學(xué)生3:
    數(shù)據(jù):
        學(xué)校=清華大學(xué)
        姓名=王三錘
        性別=男
        年齡=38
    功能:
        選課

基于上述分析的結(jié)果,我們接下來需要做的就是在程序中定義出類,然后調(diào)用類產(chǎn)生對象

class Student: # 類的命名應(yīng)該使用“駝峰體”

    school='清華大學(xué)' # 數(shù)據(jù)

    def choose(self): # 功能
        print('%s is choosing a course' %self.name)

類體最常見的是變量的定義和函數(shù)的定義,但其實類體可以包含任意Python代碼,類體的代碼在類定義階段就會執(zhí)行,因而會產(chǎn)生新的名稱空間用來存放類中定義的名字,可以打印Student.__dict__來查看類這個容器內(nèi)盛放的東西

調(diào)用類的過程稱為將類實例化,拿到的返回值就是程序中的對象,或稱為一個實例

A=Student()
B=Student()
C=Student()

如此A,B,C全都一樣了(只有類中共有的內(nèi)容,而沒有各自獨有的數(shù)據(jù)),想在實例化的過程中就為三位學(xué)生定制各自獨有的數(shù)據(jù):姓名,性別,年齡,需要我們在類內(nèi)部新增一個__init__方法,如下

class Student:
    school='清華大學(xué)'

    #該方法會在對象產(chǎn)生之后自動執(zhí)行,專門為對象進行初始化操作,可以有任意代碼,但一定不能返回非None的值
    def __init__(self,name,sex,age):
        self.name=name
        self.sex=sex
        self.age=age

    def choose(self): 
        print('%s is choosing a course' %self.name)

然后我們重新實例出三位學(xué)生

A=Student('王大錘','男',28)
B=Student('王二錘','女',19)
C=Student('王三錘','男',18)

單拿A的產(chǎn)生過程來分析,調(diào)用類會先產(chǎn)生一個空對象A,然后將A連同調(diào)用類時括號內(nèi)的參數(shù)一起傳給Student.init(A,’王大錘’,’男’,28)

def __init__(self, name, sex, age):
    self.name = name  
    self.sex = sex   
    self.age = age

會產(chǎn)生對象的名稱空間,同樣可以用__dict__查看

stu1.__dict__
{'name': '王大錘', 'sex': '男', 'age': 28}

至此,我們造出了三個對象與一個類,對象存放各自獨有的數(shù)據(jù),類中存放對象們共有的內(nèi)容

屬性訪問
類屬性與對象屬性

在類中定義的名字,都是類的屬性,細(xì)說的話,類有兩種屬性:數(shù)據(jù)屬性和函數(shù)屬性,可以通過__dict__訪問屬性的值,比如Student.dict[‘school’],但Python提供了專門的屬性訪問語法

Student.school # 訪問數(shù)據(jù)屬性,等同于Student.__dict__['school']
Student.choose # 訪問函數(shù)屬性,等同于Student.__dict__['choose']
屬性查找順序與綁定方法

對象的名稱空間里只存放著對象獨有的屬性,而對象們相似的屬性是存放于類中的。對象在訪問屬性時,會優(yōu)先從對象本身的__dict__中查找,未找到,則去類的__dict__中查找

1、類中定義的變量是類的數(shù)據(jù)屬性,是共享給所有對象用的,指向相同的內(nèi)存地址

# id都一樣
print(id(Student.school)) # 4301108704

print(id(A.school)) # 4301108704
print(id(B.school)) # 4301108704
print(id(C.school)) # 4301108704

2、類中定義的函數(shù)是類的函數(shù)屬性,類可以使用,但必須遵循函數(shù)的參數(shù)規(guī)則,有幾個參數(shù)需要傳幾個參數(shù)

Student.choose(A) # 王大錘 is choosing a course
Student.choose(B) # 王二錘 is choosing a course
Student.choose(C) # 王三錘 is choosing a course

但其實類中定義的函數(shù)主要是給對象使用的,而且是綁定給對象的,雖然所有對象指向的都是相同的功能,但是綁定到不同的對象就是不同的綁定方法,內(nèi)存地址各不相同

print(id(Student.choose)) # 4335426280

print(id(A.choose)) # 4300433608
print(id(B.choose)) # 4300433608
print(id(C.choose)) # 4300433608

綁定到對象的方法特殊之處在于,綁定給誰就應(yīng)該由誰來調(diào)用,誰來調(diào)用,就會將’誰’本身當(dāng)做第一個參數(shù)自動傳入(方法__init__也是一樣的道理)

A.choose()  # 等同于Student.choose(A)
B.choose()  # 等同于Student.choose(B)
C.choose()  # 等同于Student.choose(C)

綁定到不同對象的choose技能,雖然都是選課,但大錘選的課,不會選給二錘,這正是”綁定“二字的精髓所在。

綁定到對象方法的這種自動傳值的特征,決定了在類中定義的函數(shù)都要默認(rèn)寫一個參數(shù)self,self可以是任意名字,但命名為self是約定俗成的。

Python中一切皆為對象,且Python3中類與類型是一個概念

到此,關(guān)于“python面向?qū)ο缶幊淘趺磳崿F(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享題目:python面向?qū)ο缶幊淘趺磳崿F(xiàn)
本文網(wǎng)址:http://weahome.cn/article/gccpcd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部