日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的类作用_python——类中的self到底的作用及三个应用场景

發布時間:2023/12/19 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的类作用_python——类中的self到底的作用及三个应用场景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

class Test(object):

def __init__ (self, val1):

self.val0 = val1

def fun1(self):

print(self.val0)

def fun2(self, val2):

print(val2)

def fun3(self):

print(self.fun1)

self.fun1()

ins=Test(123)

ins.new_val=”I’m a new value” # 在實例中添加數據屬性

1、self是什么

在python的類中self代表實例本身,具體來說,是該實例的內存地址。

在調用實例的方法時,Python解釋器會自己把實例!!變量!!傳給類的函數中的self。

以上述代碼I為例,代碼I定義了一個類Test,在這個類中,self為參數變量,在類Test實例化得到實例ins時,python解釋器自動調用__init__,執行Test.init(ins, 123),該self可接收實例ins的內存地址,從而self代表了實例本身。類似的,如果實例化ins后,執行ins.fun1( ),python解釋器會將ins.fun1( )解釋成Test.fun1(ins)。可見,self這個變量是無需用戶手動傳送值的,解釋器會自動幫我們給其傳遞實例。

需要注意的是,self不是關鍵字,換言之,可以用其它的合法變量名替換self,但是,規范和標準建議我們一致使用self。

2、self的使用場景

在類中,self的使用有下面3個場景:

1)self為類中的函數的第一個參數,例如在類中,def fun1(self, …)。

上文說過,“在調用實例的方法時,Python解釋器會自己把實例變量傳給類的函數中的self”,如果類的函數的第一個參數不是代表實例的self,則調用實例的方法時,該方法沒有參數接收解釋器自動傳入的實例變量,從而程序會產生異常。

事實上,“和普通的函數相比,在類中定義的函數只有一點不同,就是第一個參數永遠是實例變量self,并且,調用時,不用傳遞該參數。除此之外,類的方法和普通函數沒有什么區別,所以,你仍然可以用默認參數、可變參數、關鍵字參數和命名關鍵字參數”(廖雪峰老師說的)。

2)在類中,引用實例的屬性,示例:self.變量名(如self.val0)。

引用實例的屬性的目的是為實例綁定屬性、寫入或讀取實例的屬性。

例如,在代碼I中,在類的函數__init__中,“self.val1 = val1”將屬性val0綁定到了實例self(類實例化成ins后,self就代表實例ins了)上,并且將變量val1的值賦給了實例的屬性val0。在函數fun1中,print(self.val0),讀取了實例self的值val0,并打印出來,當然,在函數中修改屬性val0的值也是可以的。

3)在類中,調用實例的方法,例如,self.fun1();獲取實例的方法的地址,例如self.fun1。

類是抽象的模板,而實例是根據類創建出來的一個個具體的“對象”,每個對象都擁有相同的方法,但各自的數據可能不同。既然,self代表實例,則可以“self.函數名”的方式表示實例的方法地址,以“self.函數名()”的方式,調用實例的方法。在類的定義中,以及實例化后對實例方法的調用,都可以這樣做。

3、python的幾種變量——按作用域分

1、全局變量:在模塊內、在所有函數外面、在class外面,這就是全局變量。

2、局部變量:在函數內、在class的方法內(未加self修飾的) ,這就是局部變量

3、靜態變量(也可以說,類屬性):在class內的,但不在class的方法內的,這就是靜態變量

4、實例變量(也可以說,實例屬性):在class的方法內的,用self修飾的變量,這就是實例變量

4、self和變量的關系

綜合上述的1、2和3點,可以得到在類中,self和變量的關系了,一言以蔽之,被self修飾的變量是實例變量,不被self修飾的變量不是實例變量。

實例變量有什么作用,或者說,什么時候應該使用self修飾變量比較好?我的總結如下:

當我們想將某個變量綁定給實例時,就在類中,使用self修飾該變量。一般來說,類實例化為不同實例后,為了不同實例的某一變量互不干擾,就將該變量綁定給實例。

具體的使用場景,

1)若需要在類的不同方法中調用同一變量,且屬于同一個類的不同實例的該變量互不影響(即排除類屬性),則在類中將該變量綁定給實例。

2)需要在類實例化得到實例后,修改、或引用實例的某變量,則在類中將該變量綁定給實例。

a = 1

def say():

print '調用了全局方法'

class people:

a = 100

def say(self):

print '調用了類的方法'

def do(self):

say()

self.say()

print 'a = ' , a

print 'self.a = ' , self.a

p = people()

p.do()

>>>

調用了全局方法

調用了類的方法

a = 1

self.a = 100

Python中,類之外可以定義很多全局變量和函數,這是它與java明顯的不同。為了解釋器準確的找到函數或變量,需要使用self來限定方法變量的區域,這樣解釋器就能快速知道你調用的是類中的變量還是全局的變量了。

5、一點補充

為實例綁定屬性有兩種方式

1)在類的函數__init__中,為實例綁定變量。

這也是本文討論的場景。

根據pep8,所有的加了self的變量,需要確保是在__init__中首次出現,雖然不這樣做有些場景下程序也不會出錯,但按照規定來吧。

2)在實例化后,為實例綁定新的屬性。例如,實例變量.屬性變量=值

由于Python是動態語言,從而,根據類創建的實例可以任意綁定屬性。通過實例變量給實例綁定屬性是方法之一,例如代碼I中的,ins.newval=”I’m a new value”,為實例綁定了屬性newval。不過,這不是本文討論的關注點

總結

以上是生活随笔為你收集整理的python的类作用_python——类中的self到底的作用及三个应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美偷拍综合 | 亚洲字幕av一区二区三区四区 | 国产福利专区 | 国产成人免费 | 久久久九九九热 | 久久久免费av | 国产一区二区三区四区五区在线 | 韩国精品在线 | 国产熟妇一区二区三区aⅴ网站 | 免费观看毛片 | www.色呦呦| 色小妹av | 精品人妻无码一区二区三 | 日韩精品免费一区二区在线观看 | 国产 日韩 一区 | 99久久精品国产色欲 | 欧美视频在线观看一区二区 | 国产福利在线观看 | 久久99热这里只有精品 | 久久韩国 | 天堂网在线资源 | 一本久道综合色婷婷五月 | 色666| 超碰青娱乐 | 男女性杂交内射妇女bbwxz | 毛片一卡二卡 | 污视频网站免费看 | 噼里啪啦国语高清 | 中文人妻熟妇乱又伦精品 | 亚洲一区第一页 | 在线观看黄网 | 婷婷六月色| 国产日产精品一区二区三区 | 欧美日韩亚洲另类 | 爱插网 | 一级黄色片免费看 | 在线国产三级 | 日韩一区在线视频 | 最新中文字幕2019 | 天天插伊人 | 在线不卡一区二区 | 五月天爱爱 | 亚洲一区二区三区视频在线 | 国产成人精品免高潮在线观看 | 国产91精品高潮白浆喷水 | 亚洲成年| 免费av软件| 97视频播放 | 韩国女主播裸体摇奶 | 被黑人各种姿势猛c哭h文1 | 亚洲av无码一区二区乱子伦 | 日韩欧美精品在线 | 精品国产午夜福利在线观看 | 特及毛片| 欧美高清一区二区 | 在线观看网站黄 | 国产一级自拍视频 | 亚洲欧洲日韩在线 | 欧美中文在线观看 | 成人拍拍视频 | 黄色av网址大全 | 亚洲爽爆 | 亚欧美日韩| 五月天国产视频 | 久久老女人 | 成人激情小视频 | 天天干天天操 | av的天堂 | 91亚瑟| 东北女人啪啪ⅹxx对白 | 一级免费观看 | 天天亚洲| 国产成人a人亚洲精品无码 在线aa | 中文字幕国产视频 | wwwav网站| 香蕉视频在线观看免费 | 亚洲黄在线观看 | 经典三级av在线 | 欧美精品自拍视频 | 成人在线视频网站 | 国产在线观看第一页 | 黄色av网页| 久久成人在线 | 美女精品在线 | 亚洲乱亚洲乱妇 | 蜜桃臀一区二区三区 | 日色网站 | www.九色| 超碰在线人人干 | 欧美日韩国产电影 | 日韩乱淫 | 9191久久 | 色悠悠久久综合 | 人妻一区二区三区四区 | 麻豆精品91| 嫩草影院国产 | 动漫美女被到爽 | 免费超碰在线观看 | 夜夜av|