成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python定義靜態(tài)函數(shù),python函數(shù)靜態(tài)變量

python 里面有靜態(tài)函數(shù)嗎

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

我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、冊(cè)亨ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的冊(cè)亨網(wǎng)站制作公司

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 為什么要使用靜態(tài)方法

Python使用靜態(tài)方法類似函數(shù)工具使用,一般盡量少用靜態(tài)方法。

Python的靜態(tài)方法和類成員方法都可以被類或?qū)嵗L問(wèn),兩者概念不容易理清,但還是有區(qū)別的:

1)靜態(tài)方法無(wú)需傳入self參數(shù),類成員方法需傳入代表本類的cls參數(shù);

2)從第1條,靜態(tài)方法是無(wú)法訪問(wèn)實(shí)例變量的,而類成員方法也同樣無(wú)法訪問(wèn)實(shí)例變量,但可以訪問(wèn)類變量;

3)靜態(tài)方法有點(diǎn)像函數(shù)工具庫(kù)的作用,而類成員方法則更接近類似Java面向?qū)ο蟾拍钪械撵o態(tài)方法。

python類和函數(shù)的區(qū)別

一、主體不同

1、類:是面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)現(xiàn)信息封裝的基礎(chǔ)。

2、函數(shù):是指一段在一起的、可以做某一件事兒的程序。也叫做子程序、(OOP中)方法。

二、特點(diǎn)不同

1、類:是一種用戶定義的引用數(shù)據(jù)類型,也稱類類型。每個(gè)類包含數(shù)據(jù)說(shuō)明和一組操作數(shù)據(jù)或傳遞消息的函數(shù)。類的實(shí)例稱為對(duì)象。

2、函數(shù):分為全局函數(shù)、全局靜態(tài)函數(shù);在類中還可以定義構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、成員函數(shù)、友元函數(shù)、運(yùn)算符重載函數(shù)、內(nèi)聯(lián)函數(shù)等。

三、規(guī)則不同

1、類:實(shí)質(zhì)是一種引用數(shù)據(jù)類型,類似于byte、short、int(char)、long、float、double等基本數(shù)據(jù)類型,不同的是它是一種復(fù)雜的數(shù)據(jù)類型。

2、函數(shù):函數(shù)必須聲明后才可以被調(diào)用。調(diào)用格式為:函數(shù)名(實(shí)參)調(diào)用時(shí)函數(shù)名后的小括號(hào)中的實(shí)參必須和聲明函數(shù)時(shí)的函數(shù)括號(hào)中的形參個(gè)數(shù)相同。

參考資料來(lái)源:百度百科-函數(shù)

參考資料來(lái)源:百度百科-類

類函數(shù)、成員函數(shù)、靜態(tài)函數(shù)、抽象函數(shù)、方法偽裝屬性

本篇博客是滾雪球?qū)W Python 第二輪的最后一篇博客,我們將內(nèi)容繼續(xù)提升到面向?qū)ο蟛糠?,為你補(bǔ)充類里面的一些裝飾器,學(xué)習(xí)之后,希望你的 Python 基礎(chǔ)知識(shí)可以更上一層樓。

先直接看代碼,再對(duì)代碼內(nèi)容進(jìn)行分析與學(xué)習(xí)。

首先要掌握的是類函數(shù)的定義格式,在普通函數(shù)的前面添加裝飾器 @classmethod ,該函數(shù)就會(huì)轉(zhuǎn)換為類函數(shù),同時(shí)函數(shù)的第一個(gè)參數(shù)默認(rèn)是 cls ,該變量名可以任意,建議使用成 cls ,這個(gè)是程序員之間的約定。

在 Python 中,大部分 @classmethod 裝飾的函數(shù)末尾都是 return cls(XXX) , return XXX.__new__ () 也就是 @classmethod 的一個(gè)主要用途是作為構(gòu)造函數(shù)。

先掌握一個(gè)概念,靜態(tài)函數(shù)不屬于它所在的那個(gè)類,它是獨(dú)立于類的一個(gè)單獨(dú)函數(shù),只是寄存在一個(gè)類名下,先建立這個(gè)基本概念,后面學(xué)起來(lái)就簡(jiǎn)單很多了。

在同一個(gè)類中,調(diào)用靜態(tài)方法,使用 類名.函數(shù)名() 的格式。

先創(chuàng)建一個(gè)父類,其中包含兩個(gè)靜態(tài)函數(shù)與一個(gè)類函數(shù)。

再編寫(xiě)一個(gè) S 類繼承自 F 類:

測(cè)試之后,基本結(jié)論如下:

如果在子類中覆蓋了父類的靜態(tài)函數(shù),那調(diào)用時(shí)使用的是子類自己的靜態(tài)函數(shù),

如果在子類中沒(méi)有覆蓋父類的靜態(tài)函數(shù),那調(diào)用時(shí)使用的是父類的靜態(tài)函數(shù),

類函數(shù)同樣遵循該規(guī)則。

如果希望在子類中調(diào)用父類的屬性或者函數(shù),請(qǐng)使用 父類名. 的形式實(shí)現(xiàn)。

被 @abstractmethod 裝飾的函數(shù)為抽象函數(shù),含抽象函數(shù)的類不能實(shí)例化,繼承了含抽象函數(shù)的子類必須覆蓋所有抽象函數(shù)裝飾的方法,未被裝飾的可以不重寫(xiě)。

抽象類是一個(gè)特殊的類,它的特殊之處在于只能被繼承,不能被實(shí)例化,實(shí)現(xiàn)代碼如下:

抽象基類中學(xué)習(xí)還需要了解元類相關(guān)知識(shí),在第三輪滾雪球?qū)W Python 中將為你展開(kāi)這部分內(nèi)容。

在 Python 面向?qū)ο蟮木幋a過(guò)程中, 對(duì)象.屬性 來(lái)獲取屬性的值,使用 對(duì)象.方法() 來(lái)調(diào)用方法,通過(guò)裝飾器 @property 可以將一個(gè)方法偽裝成屬性,從而使用 對(duì)象.方法 沒(méi)有括號(hào)的形式調(diào)用。代碼非常簡(jiǎn)單:

這種寫(xiě)法最直接的應(yīng)用,就是將部分屬性變成只讀屬性,例如,上述代碼,你無(wú)法通過(guò)下述代碼對(duì) name 進(jìn)行修改。

如果希望方法偽裝的屬性具備修改和刪除功能,需要參考下述代碼:

上述代碼在將 name 方法偽裝成屬性之后,可以通過(guò) @name.setter 和 @name.deleter 對(duì)同名的 name 方法進(jìn)行裝飾,從而實(shí)現(xiàn)了修改與刪除功能。

所以一般使用方法偽裝屬性的步驟是:

如果你覺(jué)得這個(gè)比較麻煩,還存在一種方法偽裝屬性的方式。使用 property 函數(shù),原型如下

通過(guò)上述函數(shù)將方法偽裝成屬性的代碼為:

滾雪球?qū)W Python 第二輪 15 篇博客在一次結(jié)束了,下一輪將在 4 月中旬再次開(kāi)啟,學(xué) Python 我們一直在路上,希望本系列的課程對(duì)你的 Python 學(xué)習(xí)有所助力。

Python進(jìn)階-靜態(tài)方法(@staticmethod)

@staticmethod 靜態(tài)方法只是名義上歸屬類管理,但是 不能使用類變量和實(shí)例變量,是類的工具包

放在函數(shù)前(該函數(shù)不傳入self或者cls),所以不能訪問(wèn)類屬性和實(shí)例屬性

本文題目:python定義靜態(tài)函數(shù),python函數(shù)靜態(tài)變量
路徑分享:http://jinyejixie.com/article26/dseohjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名域名注冊(cè)、網(wǎng)站收錄、App設(shè)計(jì)品牌網(wǎng)站建設(shè)、Google

廣告

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

成都app開(kāi)發(fā)公司
漯河市| 开远市| 淄博市| 乾安县| 柘城县| 昌平区| 额济纳旗| 偃师市| 三明市| 龙海市| 怀宁县| 逊克县| 靖州| 佛学| 鄂州市| 新郑市| 健康| 项城市| 宁陕县| 郴州市| 右玉县| 江陵县| 弥渡县| 广平县| 彭泽县| 太康县| 兴仁县| 碌曲县| 天水市| 尤溪县| 安庆市| 含山县| 莒南县| 花垣县| 商河县| 太和县| 沙河市| 当雄县| 孝感市| 绥化市| 苗栗县|