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

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

python靜態(tài)方法和類方法的區(qū)別

Python 是雙面向的,既可以面向函數(shù)編程,也可以面向?qū)ο缶幊?所謂面向函數(shù)就是單獨一個. py 文件,里面沒有類,全是一些函數(shù),調(diào)用的時候?qū)肽K,通過模塊名.函數(shù)名()即可調(diào)用,完全不需要類,那么你可能會問,那要類還有什么毛用? 類就是用來面向?qū)ο缶幊汤?類可以有自己的屬性,類可以創(chuàng)建很多實例,每個實例可以有不同的屬性,這也就保存了很多私有的數(shù)據(jù),總之都有存在的必要.

十多年的綏中網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整綏中建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“綏中網(wǎng)站設計”,“綏中網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

再來看上面這張圖,在類里面定義的函數(shù)就是方法,類方法需要@ classmethod 修飾并且有個隱藏參數(shù) cls,實例方法必須有個參數(shù) self, 靜態(tài)方法必須有 @staticmethod修飾,類和實例都可以訪問靜態(tài)方法,實例可以訪問實例方法也可以訪問類方法,類可以訪問類方法也可以訪問實例方法,訪問實例方法必須要帶參數(shù) self, 可以理解為類其實也是一個實例,類訪問實例方法不帶參數(shù)會報錯的.類本身可以訪問函數(shù),實例卻不行.

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

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

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)方法的區(qū)別

面相對象程序設計中,類方法和靜態(tài)方法是經(jīng)常用到的兩個術(shù)語。

邏輯上講:類方法是只能由類名調(diào)用;靜態(tài)方法可以由類名或?qū)ο竺M行調(diào)用。

在C++中,靜態(tài)方法與類方法邏輯上是等價的,只有一個概念,不會混淆。

而在python中,方法分為三類實例方法、類方法、靜態(tài)方法。代碼如下:

 class Test(object):

def InstanceFun(self):

print("InstanceFun");

print(self);

@classmethod

def ClassFun(cls):

print("ClassFun");

print(cls);

@staticmethod

def StaticFun():

print("StaticFun");

t = Test(); 

t.InstanceFun();# 輸出InstanceFun,打印對象內(nèi)存地址“__main__.Test object at 0x0293DCF0”

Test.ClassFun(); # 輸出ClassFun,打印類位置 class '__main__.Test'

Test.StaticFun(); # 輸出StaticFun

t.StaticFun(); # 輸出StaticFun

t.ClassFun(); # 輸出ClassFun,打印類位置 class '__main__.Test'

Test.InstanceFun(); # 錯誤,TypeError: unbound method instanceFun() must be called with Test instance as first argument

Test.InstanceFun(t); # 輸出InstanceFun,打印對象內(nèi)存地址“__main__.Test object at 0x0293DCF0”

t.ClassFun(Test); # 錯誤 classFun() takes exactly 1 argument (2 given)

可以看到,在python中,兩種方法的主要區(qū)別在于參數(shù)。實例方法隱含的參數(shù)為類實例self,而類方法隱含的參數(shù)為類本身cls。

靜態(tài)方法無隱含參數(shù),主要為了類實例也可以直接調(diào)用靜態(tài)方法。

所以邏輯上類方法應當只被類調(diào)用,實例方法實例調(diào)用,靜態(tài)方法兩者都能調(diào)用。主要區(qū)別在于參數(shù)傳遞上的區(qū)別,實例方法悄悄傳遞的是self引用作為參數(shù),而類方法悄悄傳遞的是cls引用作為參數(shù)。

python實現(xiàn)了一定的靈活性使得類方法和靜態(tài)方法,都能夠被實例和類二者調(diào)用

Python中靜態(tài)方法和類方法的區(qū)別

一、先是在語法上面的區(qū)別:

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

2、靜態(tài)方法是無妨訪問實例變量和類變量的,類成員方法無法訪問實例變量但是可以訪問類變量

二、使用的區(qū)別:

由于靜態(tài)方法無法訪問類屬性,實例屬性,相當于一個相對獨立的方法,跟類其實并沒有什么關(guān)系。這樣說來,靜態(tài)方法就是在類的作用域里的函數(shù)而已。

新聞標題:python靜態(tài)類函數(shù),python函數(shù)靜態(tài)變量
文章源于:http://jinyejixie.com/article28/dsseejp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站導航營銷型網(wǎng)站建設、響應式網(wǎng)站、域名注冊、外貿(mào)網(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)

商城網(wǎng)站建設
拜泉县| 灌南县| 肥乡县| 青阳县| 五指山市| 山东省| 长寿区| 柯坪县| 如皋市| 吴桥县| 清河县| 剑川县| 景德镇市| 六安市| 哈巴河县| 潼关县| 乐清市| 财经| 奉新县| 长寿区| 花莲县| 榆树市| 田阳县| 洪江市| 甘洛县| 漾濞| 新乐市| 宿迁市| 承德县| 西贡区| 策勒县| 巴楚县| 澄迈县| 漳平市| 建平县| 镇康县| 玉山县| 和田县| 得荣县| 海兴县| 兴安县|