python的類里用@staticmethod的是靜態(tài)方法,@classmethod的是類方法,如下

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括嶺東網(wǎng)站建設(shè)、嶺東網(wǎng)站制作、嶺東網(wǎng)頁制作以及嶺東網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,嶺東網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到嶺東省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
class?Person(object):
person_list?=?[]
def?__init__(self,?name,?age):
self.name?=?name
self.age?=?age
self.person_list.append(self)
@classmethod
def?one_year_later(cls):
for?p?in?cls.person_list:
p.age?+=?1
@staticmethod
def?born_one_boby(name):
return?Person(name,?0)
def?__repr__(self):
return?'Person?name:%s,?age:%s'?%?(self.name,?self.age)
if?__name__?==?'__main__':
petter?=??Person('Petter',23)
merry?=?Person('Merry',21)
print(petter)?#?Person?name:Petter,?age:23
print(merry)??#??Person?name:Merry,?age:21
Person.one_year_later()
print(petter)??#??Person?name:Petter,?age:24
print(merry)??#??Person?name:Merry,?age:22
baby?=?merry.born_one_boby('Tom')
print(Person.person_list)?#??[Person?name:Petter,?age:24,?Person?name:Merry,?age:22,?Person?name:Tom,?age:0]
Python 是雙面向的,既可以面向函數(shù)編程,也可以面向?qū)ο缶幊?所謂面向函數(shù)就是單獨(dú)一個(gè). py 文件,里面沒有類,全是一些函數(shù),調(diào)用的時(shí)候?qū)肽K,通過模塊名.函數(shù)名()即可調(diào)用,完全不需要類,那么你可能會(huì)問,那要類還有什么毛用? 類就是用來面向?qū)ο缶幊汤?類可以有自己的屬性,類可以創(chuàng)建很多實(shí)例,每個(gè)實(shí)例可以有不同的屬性,這也就保存了很多私有的數(shù)據(jù),總之都有存在的必要.
再來看上面這張圖,在類里面定義的函數(shù)就是方法,類方法需要@ classmethod 修飾并且有個(gè)隱藏參數(shù) cls,實(shí)例方法必須有個(gè)參數(shù) self, 靜態(tài)方法必須有 @staticmethod修飾,類和實(shí)例都可以訪問靜態(tài)方法,實(shí)例可以訪問實(shí)例方法也可以訪問類方法,類可以訪問類方法也可以訪問實(shí)例方法,訪問實(shí)例方法必須要帶參數(shù) self, 可以理解為類其實(shí)也是一個(gè)實(shí)例,類訪問實(shí)例方法不帶參數(shù)會(huì)報(bào)錯(cuò)的.類本身可以訪問函數(shù),實(shí)例卻不行.
class A(object):
def fun_a(self):#實(shí)例方法
pass
@staticmethod
def fun_b():#靜態(tài)方法
pass
@classmethod
def fun_c(cls):#類方法
pass
雖然靜態(tài)方法和類方法調(diào)用方式都一樣,都可以通過【類.方法名】來使用,但是類方法中有默認(rèn)屬性cls,指向自身的類,所以一般如果是單一的工具函數(shù)定義成靜態(tài)方法,如果還需要調(diào)用類中其他的靜態(tài)方法,或者類方法的函數(shù)定義成類方法。望采納。
分享題目:python靜態(tài)類函數(shù),python類函數(shù)和靜態(tài)函數(shù)區(qū)別
文章源于:http://chinadenli.net/article5/dsijsoi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、軟件開發(fā)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站策劃、網(wǎng)站排名、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(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)