Python面向?qū)ο缶幊倘腴T實例分析

這篇文章主要講解了“Python面向?qū)ο缶幊倘腴T實例分析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python面向?qū)ο缶幊倘腴T實例分析”吧!

創(chuàng)新互聯(lián)是一家專業(yè)從事網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)依托強大的技術(shù)實力、以及多年的網(wǎng)站運營經(jīng)驗,為您提供專業(yè)的成都網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計開發(fā)服務(wù)!

一、面向?qū)ο蠛兔嫦蜻^程

1.兩類軟件開發(fā)設(shè)計方法

  1. 面向過程編程:根據(jù)業(yè)務(wù)邏輯從上往下,將需要用到的功能代碼封裝到函數(shù)中,著重關(guān)注開發(fā)的步驟和過程,典型代碼為C語言(關(guān)注過程)

  2. 面向?qū)ο缶幊蹋簩⒑瘮?shù)或所需要的功能進行分類和封裝,著重關(guān)注具體哪個類和函數(shù)來實現(xiàn)功能,典型代碼為Java、C++等語言(關(guān)注結(jié)果)

2.面向?qū)ο笙嚓P(guān)術(shù)語

  • 類(Class):用來描述具有相同屬性和方法的對象的集合,它定義了該集合中每個對象所共有的屬性和方法,對象是類的實例。

  • 實例:也稱對象。通過類定義的初始化方法,賦予具體的值,成為一個”有血有肉的實體”。

  • 類變量:類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數(shù)體之外。類變量通常不作為實例變量使用。

  • 數(shù)據(jù)成員:類變量或者實例變量, 用于處理類及其實例對象的相關(guān)的數(shù)據(jù)。

  • 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。

  • 局部變量:定義在方法中的變量,只作用于當(dāng)前實例的類。

  • 實例變量:在類的聲明中,屬性是用變量來表示的。這種變量就稱為實例變量,是在類聲明的內(nèi)部但是在類的其他成員方法之外聲明的。

  • 方法:類中定義的函數(shù)。

  • 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重 寫。

  • 靜態(tài)方法:不需要實例化就可以由類執(zhí)行的方法。

  • 類方法:類方法是將類本身作為對象進行操作的方法。

面向?qū)ο笕筇匦裕?/strong>

  • 封裝:將內(nèi)部實現(xiàn)包裹起來,對外透明,提供api接口進行調(diào)用的機制。

  • 繼承:即一個派生類(derived class)繼承父類(base class)的變量和方法。

  • 多態(tài):根據(jù)對象類型的不同以不同的方式進行處理。

二、類和對象

1.對象

對象是面向?qū)ο缶幊痰暮诵?,在使用對象過程中,為了將具有共同特征和行為的一組對象抽象定義,形成類

2.類

1)概念

類是一類事物,對象即是這一類事物的具體實現(xiàn),類具有相同的屬性和行為

2)類(class)的組成
  • 類名:類的名稱

  • 屬性:事物的特征

  • 方法:具體做什么

3)抽象

擁有相同或類似屬性和行為的對象都可以抽象成一個類

4)類的分類

創(chuàng)建類使用class關(guān)鍵字,帶上類名,再帶上括號,括號內(nèi)為object,這樣的類稱為:新式類;也可以不帶括號和括號內(nèi)的object,這樣的類稱為:經(jīng)典類。

# 新式類 
class Meeting2(object): 
pass 
# 經(jīng)典類 
class Meeting2: 
pass
5)創(chuàng)建對象
A = Meeting1() 
B
6)self

類方法的第一個參數(shù)必須是self(按慣例是self,也可以是其他名稱),調(diào)用時不必傳入。self代表類的實例

三、獲取或添加對象屬性

如下有個名為meeting的類,類中初始化了name、age、sex、address、attack等屬性,定義了introduction和attacked兩個方法:

class Meeting(object):
"""meeting類的類描述"""

def __init__(self, name, age, sex, address, attack):
"""構(gòu)造函數(shù)"""
self.name = name
self.age = int(age)
self.sex = sex
self.address = address
self.attack = int(attack)

def introduction(self):
print("姓名:{}".format(self.name))
print("年齡:{}".format(self.age))
print("性別:{}".format(self.sex))
print("地址:{}".format(self.address))

def attacked(self):
print(f"{self.name}正在向您發(fā)起攻擊,攻擊力為{self.attack}!")

def foreign_fun():
print("我是外部函數(shù)")

1.hasattr-檢查對象是否包含指定屬性或方法

用法:

hasattr(object,name)

作用:檢查對象中是否包含指定屬性或方法

返回值:存在返回true、不存在返回false

# 實例化meeting類
Meeting = Meeting("張三", 20, "男", "南京", 108)

# 獲取Meeting對象中是否存在name屬性
print(hasattr(Meeting, "name"))# True
# 獲取Meeting對象中是否存在mobile屬性
print(hasattr(Meeting, "mobile"))# False
# 獲取Meeting對象中是否存在attacked方法
print(hasattr(Meeting, "attacked"))# True

2.getattr-獲取對象中指定屬性的屬性值

用法:

getattr(object,name[,default])

作用:獲取對象中指定屬性的屬性值

返回值:若存在,則返回該屬性的屬性值;若不存在,則返回指定內(nèi)容

# 實例化meeting類
Meeting = Meeting("張三", 20, "男", "南京", 108)

# 獲取Meeting對象中name屬性的屬性值
print(getattr(Meeting, "name"))# 張三
# 獲取Meeting對象中kills屬性或方法的值,若不存在則返回指定內(nèi)容
print(getattr(Meeting, "kills", "未找到kills方法或?qū)傩?quot;))# 未找到kills方法或?qū)傩?
# 獲取Meeting對象中attacked方法,返回值為函數(shù)地址
print(getattr(Meeting, "attacked"))
# 使用getattr方法可以直接調(diào)用Meeting對象中的方法
f = getattr(Meeting, "attacked")
f()

打印結(jié)果如下:

Python面向?qū)ο缶幊倘腴T實例分析

3.setattr-為object對象的name屬性設(shè)置指定value

用法:

setattr(object,name,value)

作用:為object對象的指定屬性設(shè)置指定value

返回值:

# 實例化meeting類
Meeting = Meeting("張三", 20, "男", "南京", 108)

# 將對象中name屬性的值改為“劉德華”
setattr(Meeting, "name", "劉德華")
# 獲取對象中name的屬性值
print(getattr(Meeting, "name"))# 劉德華
# 將對象外部的名為foreign_fun的方法引入對象內(nèi)部,并重新命名為“new_foreign_fun”
setattr(Meeting, "new_foreign_fun", foreign_fun)
# 獲取對象中是否存在foreign_fun的屬性或方法,返回值為True或False
print(hasattr(Meeting, "foreign_fun"))# False
# 獲取對象中是否存在new_foreign_fun的屬性或方法,返回值為True或False
print(hasattr(Meeting, "new_foreign_fun"))# True

打印結(jié)果如下:

Python面向?qū)ο缶幊倘腴T實例分析

四、魔法方法

1.__init__() 構(gòu)造函數(shù)

__init__()方法是Python中一種特殊的方法,被稱為構(gòu)造函數(shù)或初始化方法,當(dāng)創(chuàng)建這個類的實例時就會調(diào)用該方法。

class Meeting(object):
"""meeting類的類描述"""

def __init__(self, name, age, sex, address, attack):
"""構(gòu)造函數(shù)"""
self.name = name
self.age = int(age)
self.sex = sex
self.address = address
self.attack = int(attack)

C = Meeting("張三", 20, "男", "南京", 108)
print(C.name)# 張三
print(C.address)# 南京

2.__del__() 析構(gòu)函數(shù)

當(dāng)刪除對象時,Python解釋器會默認調(diào)用一個方法__del__(),相當(dāng)于unittest框架中的tearDown()函數(shù)

def __del__(self): 
"""析構(gòu)函數(shù)""" 
print("%s攻擊結(jié)束" % (self.name))

每調(diào)用一次對象,都會執(zhí)行一次__del__()方法

Python面向?qū)ο缶幊倘腴T實例分析

3.引用計數(shù)

D = Meeting("張三", 20, "男", "南京", 108)
# 計算當(dāng)前實例引用計數(shù),D引用一次,sys.getrefcount(D)引用一次
print(sys.getrefcount(D))# 2

D對象的引用計數(shù)為2次,一次是D引用,一次是sys.getrefcount所引用的

4.__str()__字符串函數(shù)

__str__方法需要返回一個字符串,當(dāng)做這個對象的描述信息,當(dāng)使用print輸出對象的時候,只要定義了__str__(self)方法,那么就會打印這個方法返回的數(shù)據(jù)

def __str__(self):
"""字符串函數(shù)"""
return "我是Meeting類的字符串描述"
# __str__():字符串函數(shù),定義__str__()方法時,打印對象,打印的是__str__()方法的返回值,否則打印類的內(nèi)存地址
print(D)# 我是Meeting類的字符串描述
  • 未定義__str__()方法時,打印對象,打印的是Meeting類的內(nèi)存地址:

    <__main__.meeting object="" at0x014a7748="">

  • 定義了__str__()方法后,打印對象,打印的是__str__()方法的返回值:我是Meeting類的字符串描述

五、Python的內(nèi)置屬性

1.__dict__:獲取類的屬性

獲取類的屬性,包含一個字典,由類的數(shù)據(jù)屬性組成

# __dict__:獲取類的屬性,返回值為字典類型 
print(D.__dict__) 
# {'name': '張三', 'age': 20, 'sex': '男', 'address': '南京', 'attack': 108}

2.__doc__:獲取類的文檔字符串

class Meeting(object): 
 """meeting1類的類描述""" 
 
# __doc__:獲取類的文檔字符串 
print(D.__doc__) # meeting1類的類描述

3.__name__:獲取類名

# __name__:獲取類名 
print(Meeting.__name__) # Meeting

4.__module__:類定義所在的模塊

類的全名是'__main__.clssName',如果類位于一個導(dǎo)入模塊mymod中,那么className.__module__等于mymod

from common.http_requests import HttpRequests
# __module__:類定義所在的模塊
print(Meeting.__module__)# __main__
print(HttpRequests.__module__)# common.http_requests

Meeting類的路徑為__main__,而從common文件的http_requests文件中導(dǎo)入了HttpRequests類,打印其路徑,則為common.http_requests

5.__bases__:獲取類的所有父類構(gòu)成元素

獲取類的所有父類構(gòu)成元素(包含了一個由所有父類元素組成的元組)。例如下面有一個Song類,其繼承了父類Music,則獲取到的Song類的所有父類構(gòu)成元素為:(,)

class Music(object):
pass

class Song(Music):
pass

print(Song.__bases__)# (,)

小結(jié)

本篇文章我們介紹了面向?qū)ο蟮南嚓P(guān)概念,下面來簡單總結(jié)一下:

面向?qū)ο笙嚓P(guān)概念:

  • 類和對象:類是一類事物,對象即是這一類事物的具體實現(xiàn),類具有相同的屬性和行為;

  • 類的組成:類名、屬性、方法

  • 帶object的為新式類,不帶object的為經(jīng)典類

獲取或添加對象屬性:

  • hasattr:檢查對象是否包含指定屬性或方法

  • getattr:獲取對象中指定屬性的屬性值

  • setattr:為object對象的name屬性設(shè)置指定value

魔法方法:

  • __init__() 構(gòu)造函數(shù):又叫初始化方法,用來初始化一些成員變量

  • __del__() 析構(gòu)函數(shù):每調(diào)用一次對象,都會執(zhí)行一次__del__()方法,相當(dāng)于Unittest框架中的tearDown

  • __str()__字符串函數(shù):返回一個字符串,當(dāng)做這個對象的描述信息

Python內(nèi)置屬性:

  • __dict__:獲取類的屬性,返回值為字典類型

  • __doc__:獲取類的文檔字符串

  • __name__:獲取類名

  • __module__:類定義所在的模塊

  • __bases__:獲取類的所有父類構(gòu)成元素,返回類型為元組

感謝各位的閱讀,以上就是“Python面向?qū)ο缶幊倘腴T實例分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python面向?qū)ο缶幊倘腴T實例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

分享標(biāo)題:Python面向?qū)ο缶幊倘腴T實例分析
網(wǎng)站地址:http://bm7419.com/article46/jciheg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名全網(wǎng)營銷推廣、、商城網(wǎng)站、網(wǎng)站收錄、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)