我們都知道 ,python類中有三種常見的方法 ,分別是實(shí)例方法 ,類方法和靜態(tài)方法 。那么這幾個(gè)方法到底有什么作用 ? 它們之間有什么區(qū)別 ?該如何使用 ? 帶著這些問題 ,下面我們就來了解下這三種方法 。
1.方法介紹
2.代碼說明
若我們要實(shí)現(xiàn)一個(gè)學(xué)生的類 ,里面要實(shí)現(xiàn)3功能,分別是:
功能1:計(jì)算每個(gè)學(xué)生的總成績(jī) ,即get_total_score()方法
功能2 :對(duì)實(shí)例化的學(xué)生進(jìn)行總成績(jī)排名 ,即rank()方法
功能3:對(duì)考試時(shí)間說明 ,即exam_time()方法
import random
?
?
class Students(object):
?
scores = []
?
def __init__(self, name):
self.name = name
?
# 實(shí)例方法:
def get_total_score(self): # 返回某位學(xué)生的總成績(jī)
total_score = random.randint(200,600)
student_scores = (self.name, total_score)
Students.scores.append(student_scores)
return student_scores
?
# 類方法
@classmethod
def rank(cls): # 學(xué)生成績(jī)排名
total_scores = Students.scores
return sorted(total_scores, key=lambda x:x[1], reverse=True)
?
# 靜態(tài)方法
@staticmethod
def exam_time(): # 考試時(shí)間說明
return {"考試時(shí)間":'上午10~12點(diǎn),下午2~4點(diǎn)'}
?
?
a = Students('張三')
a.get_total_score() # 1.實(shí)例方法調(diào)用:通過實(shí)例對(duì)象來調(diào)用
b = Students('李四')
b.get_total_score()
c = Students('王五')
c.get_total_score()
d = Students('趙六')
d.get_total_score()
e = Students('劉七')
e.get_total_score()
?
print(Students.rank()) # 2.類方法調(diào)用:使用類名調(diào)用,也可以使用實(shí)例對(duì)象調(diào)用
print(Students.exam_time()) # 3.靜態(tài)方法調(diào)用:使用類名調(diào)用,也可以使用實(shí)例對(duì)象調(diào)用
?
可以看到,在學(xué)生類中分別定義了實(shí)例方法 ,類方法和靜態(tài)方法 。 那么 ,為什么我們將它定義成了不同的方法呢 ?這就要從業(yè)務(wù)的角度去理解 :
計(jì)算每個(gè)學(xué)生的總成績(jī)是針對(duì)的每個(gè)學(xué)生 ,因此實(shí)例化不同的學(xué)生,從而顯示它的總成績(jī) ,所以定義實(shí)例方法是合理的 。
對(duì)實(shí)例化的學(xué)生進(jìn)行總成績(jī)排名,這個(gè)排名很明顯是對(duì)這個(gè)對(duì)象的整體(類) 進(jìn)行的排名 ,通過實(shí)例化學(xué)生(對(duì)象)調(diào)用排名很明顯是不合理的,而應(yīng)該對(duì)整個(gè)學(xué)生,即學(xué)生的這個(gè)類進(jìn)行排名 ,故它定義成類方法是合理的 。
對(duì)考試時(shí)間說明 ,這個(gè)功能即用于學(xué)生 ,但是它又是獨(dú)立于學(xué)生,在這個(gè)方法中并不會(huì)用到類或?qū)嵗械膶傩院头椒?。故它申明成靜態(tài)方法是比較合理的 。那么這里就會(huì)有個(gè)問題 ,既然它獨(dú)立于學(xué)生這個(gè)類 ,故它是否可以放在類的外面當(dāng)做函數(shù)使用呢 ? 首先說從用法上來說是可以的。你在類外面寫一個(gè)同樣的函數(shù)也能完成此事 。但是從業(yè)務(wù)角度來說,如果這個(gè)方法的功能不能用于其它其它的類的話 ,那它放在這個(gè)類內(nèi)很合理 。反之,若這個(gè)方法的功能也能被其它類所調(diào)用 ,那么它申明為函數(shù)就更合理 。
?最后感謝每一個(gè)認(rèn)真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
軟件測(cè)試面試小程序
被百萬人刷爆的軟件測(cè)試題庫(kù)!?。≌l用誰知道?。?!全網(wǎng)最全面試刷題小程序,手機(jī)就可以刷題,地鐵上公交上,卷起來!
涵蓋以下這些面試題板塊:
1、軟件測(cè)試基礎(chǔ)理論 ,2、web,app,接口功能測(cè)試 ,3、網(wǎng)絡(luò) ,4、數(shù)據(jù)庫(kù)?,5、linux
6、web,app,接口自動(dòng)化 ,7、性能測(cè)試?,8、編程基礎(chǔ),9、hr面試題 ,10、開放性測(cè)試題,11、安全測(cè)試,12、計(jì)算機(jī)基礎(chǔ)
文章來源:http://www.zghlxwxcb.cn/news/detail-690225.html
這些資料,對(duì)于【軟件測(cè)試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴上萬個(gè)測(cè)試工程師們走過最艱難的路程,希望也能幫助到你!?文章來源地址http://www.zghlxwxcb.cn/news/detail-690225.html
到了這里,關(guān)于一文解釋python中的實(shí)例方法,類方法和靜態(tài)方法作用和區(qū)別是啥?該如何使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!