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

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

python的函數(shù)修飾符的簡(jiǎn)單介紹

Python中的“ @”(@)符號(hào)有什么作用?

【@】符號(hào)在python中是裝飾器的意思。

“專(zhuān)業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來(lái)堅(jiān)持追求的企業(yè)文化。 創(chuàng)新互聯(lián)是您可以信賴(lài)的網(wǎng)站建設(shè)服務(wù)商、專(zhuān)業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專(zhuān)注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、軟件開(kāi)發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺(jué)傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專(zhuān)業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!

裝飾器對(duì)一個(gè)可調(diào)用對(duì)象(函數(shù)、方法、類(lèi)等等)進(jìn)行裝飾,它返回的也是一個(gè)可調(diào)用對(duì)象。

一般情況下,裝飾器是對(duì)被裝飾對(duì)象的修飾與增強(qiáng)。用現(xiàn)實(shí)事物類(lèi)比的話,可以類(lèi)比為中間商:中間商不生產(chǎn)產(chǎn)品,它將工廠生產(chǎn)的產(chǎn)品進(jìn)行包裝、運(yùn)輸后再銷(xiāo)售給顧客。裝飾器不實(shí)現(xiàn)核心功能,它提供對(duì)目標(biāo)函數(shù)調(diào)用的封裝與強(qiáng)。

它裝飾的方法返回值是一個(gè)對(duì)象(BillList、Bill、List[BillDetail]等),而裝飾器【enabled_cache】的作用如它的名稱(chēng)一樣:使用緩存??梢钥吹剑@個(gè)裝飾器函數(shù)中定義了一個(gè)函數(shù)【wrapper】然后將這個(gè)wrapper作為返回值。這樣,原本調(diào)用ProductionBos.bill_with_last_week的代碼就不需要做任何改變就能享受到ProductionBos.bill_with_last_week原有的功能(得到一個(gè)BillList對(duì)象)和enabled_cache提供的附加功能(如果該對(duì)象有緩存,就不再?gòu)臄?shù)據(jù)庫(kù)查詢(xún))。

Python 中的 classmethod 和 staticmethod 有什么具體用途

classmethod:類(lèi)方法staticmethod:靜態(tài)方法

在python中,靜態(tài)方法和類(lèi)方法都是可以通過(guò)類(lèi)對(duì)象和類(lèi)對(duì)象實(shí)例訪問(wèn)。但是區(qū)別是:

@classmethod 是一個(gè)函數(shù)修飾符,它表示接下來(lái)的是一個(gè)類(lèi)方法,而對(duì)于平常我們見(jiàn)到的則叫做實(shí)例方法。 類(lèi)方法的第一個(gè)參數(shù)cls,而實(shí)例方法的第一個(gè)參數(shù)是self,表示該類(lèi)的一個(gè)實(shí)例。

普通對(duì)象方法至少需要一個(gè)self參數(shù),代表類(lèi)對(duì)象實(shí)例

類(lèi)方法有類(lèi)變量cls傳入,從而可以用cls做一些相關(guān)的處理。并且有子類(lèi)繼承時(shí),調(diào)用該類(lèi)方法時(shí),傳入的類(lèi)變量cls是子類(lèi),而非父類(lèi)。 對(duì)于類(lèi)方法,可以通過(guò)類(lèi)來(lái)調(diào)用,就像C.f(),有點(diǎn)類(lèi)似C++中的靜態(tài)方法, 也可以通過(guò)類(lèi)的一個(gè)實(shí)例來(lái)調(diào)用,就像C().f(),這里C(),寫(xiě)成這樣之后它就是類(lèi)的一個(gè)實(shí)例了。

靜態(tài)方法則沒(méi)有,它基本上跟一個(gè)全局函數(shù)相同,一般來(lái)說(shuō)用的很少

Example 1:

class a():

@staticmethod

def staticm():

print 'static'

def normalm(self):

print 'nomarl',self

@classmethod

def classm(cls):

print 'class',cls

a1=a()

a1.normalm()

nomarl __main__.a instance at 0x84dddec

a1.staticm()

static

a1.classm()

class __main__.a

type(a)

type 'classobj'

type(a1)

type 'instance'

Example 2:

class A(object):

@classmethod

def cm(cls):

print '類(lèi)方法cm(cls)調(diào)用者:', cls.__name__

@staticmethod

def sm():

print '靜態(tài)方法sm()被調(diào)用'

class B(A):

pass

A.cm()

B.cm()

A.sm()

B.sm()

輸出:

類(lèi)方法cm(cls)調(diào)用者: A

類(lèi)方法cm(cls)調(diào)用者: B

靜態(tài)方法sm()被調(diào)用

靜態(tài)方法sm()被調(diào)用

@classmethod與@staticmethod的應(yīng)用實(shí)例

#!/usr/bin/env python

# -*- coding: utf-8 -*-

class TClassStatic(object):

obj_num = 0

def __init__(self, data):

self.data = data

TClassStatic.obj_num += 1

def printself(self):

print("self.data: ", self.data)

@staticmethod

def smethod():

print("the number of obj is : ", TClassStatic.obj_num)

@classmethod

def cmethod(cls):

print("cmethod : ", cls.obj_num)

cls.smethod()

def main():

objA = TClassStatic(10)

objB = TClassStatic(12)

objB.printself()

objA.smethod()

objB.cmethod()

print("------------------------------")

TClassStatic.smethod()

TClassStatic.cmethod()

if __name__ == "__main__":

main()123456789101112131415161718192021222324252627282930313233

輸出結(jié)果如下:

('self.data: ', 12)

('the number of obj is : ', 2)

('cmethod : ', 2)

('the number of obj is : ', 2)

------------------------------

('the number of obj is : ', 2)

('cmethod : ', 2)

('the number of obj is : ', 2)

python 中 @ 是什么意思

修飾符,比如說(shuō)

class A:

@staticmethod

def m(self):

pass

就相當(dāng)于

class A:

def m(self):

pass

m = staticmethod(m)

其實(shí)就是一調(diào)用一個(gè)函數(shù)參數(shù)為下行的變量,并且替換它

擴(kuò)展資料:

函數(shù)修飾符

@用做函數(shù)的修飾符,可以在模塊或者類(lèi)的定義層內(nèi)對(duì)函數(shù)進(jìn)行修飾,出現(xiàn)在函數(shù)定義的前一行,不允許和函數(shù)定義在同一行。

一個(gè)修飾符就是一個(gè)函數(shù),它將被修飾的函數(shù)作為參數(shù),并返回修飾后的同名函數(shù)或其他可調(diào)用的東西。

在Python的函數(shù)中偶爾會(huì)看到函數(shù)定義的上一行有@functionName的修飾,當(dāng)解釋器讀到@這樣的修飾符的時(shí)候會(huì)優(yōu)先解除@后的內(nèi)容,直接就把@的下一行的函數(shù)或者類(lèi)作為@后邊函數(shù)的參數(shù),然后將返回值賦給下一個(gè)修飾的函數(shù)對(duì)象。

參考資料來(lái)源:百度百科-Python (計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言)


網(wǎng)站題目:python的函數(shù)修飾符的簡(jiǎn)單介紹
轉(zhuǎn)載注明:http://weahome.cn/article/dosdhdd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部