新聞中心
首先self本來是在類中用到的,不可以用在函數(shù)中。很多小伙伴在學(xué)習(xí)的時候,因為對模塊之間的聯(lián)系把握比較迷糊,所以在使用上容易混淆出錯。就拿self來說,本來是我們在類中用到的,有些小伙伴學(xué)習(xí)了函數(shù)后把self也應(yīng)用到了其中,這其實是不可取的。

成都創(chuàng)新互聯(lián)專注于新興企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城系統(tǒng)網(wǎng)站開發(fā)。新興網(wǎng)站建設(shè)公司,為新興等地區(qū)提供建站服務(wù)。全流程按需定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
下面我們就self進行一個全面的講解,其中的注意點還需要小伙伴們加強記憶。
Python中self在類模板中出現(xiàn)的兩個位置:
1.各個類方法的形參變量中,作為第一個參數(shù);
2.各個類方法體在調(diào)用類屬性和類方法時,以點取法獲取。
class Sequence(nn.Module): def __init__(self): super(Sequence, self).__init__() self.lstm1 = nn.LSTMCell(3, 51) self.lstm2 = nn.LSTMCell(51, 51) self.linear = nn.Linear(51, 3) def forward(self, input, h_t, c_t, h_t2, c_t2): outputs = [] for i, input_t in enumerate(input): h_t, c_t = self.lstm1(input_t, (h_t, c_t)) h_t2, c_t2 = self.lstm2(h_t, (h_t2, c_t2)) output = self.linear(h_t2) outputs += [output] outputs = torch.stack(outputs, 0).squeeze(2) return outputs, h_t, c_t, h_t2, c_t2
注意點:
1.self只有在類方法中才會出現(xiàn),獨立的函數(shù)或方法是不必帶有self的;
2.self在定義類的方法時是必須有的,但是在調(diào)用時是不用寫的,因為解釋器會自動將 self變量添加到方法的參數(shù)列表中;
3.self指的是類實例化后的對象本身,并不是類本身,因為類本身是不會被解釋器解釋運行的,因此它的屬性、方法、參數(shù)都不是真正的有效值;
4.self可以看做是一個占位符,因此它的名稱并不是一定要寫生self的,在python中self也不是關(guān)鍵字,這個名字是可以隨意定義的,但為了提高代碼的可讀性,最好是將其命名成self。
以上就是python中self的基本知識概要,通過學(xué)習(xí)我們知道獨立的函數(shù)中是不必帶有self的,這點小伙伴們一定要記住啦。
(推薦操作系統(tǒng):windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。)
網(wǎng)站題目:創(chuàng)新互聯(lián)Python教程:python中self可以在函數(shù)中使用嗎?
轉(zhuǎn)載來于:http://m.5511xx.com/article/dhpgssi.html


咨詢
建站咨詢
