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

成都創(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è)計,全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
下面我們就self進(jìn)行一個全面的講解,其中的注意點(diǎn)還需要小伙伴們加強(qiáng)記憶。
Python中self在類模板中出現(xiàn)的兩個位置:
1.各個類方法的形參變量中,作為第一個參數(shù);
2.各個類方法體在調(diào)用類屬性和類方法時,以點(diǎn)取法獲取。
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
注意點(diǎn):
1.self只有在類方法中才會出現(xiàn),獨(dú)立的函數(shù)或方法是不必帶有self的;
2.self在定義類的方法時是必須有的,但是在調(diào)用時是不用寫的,因?yàn)榻忉屍鲿詣訉?self變量添加到方法的參數(shù)列表中;
3.self指的是類實(shí)例化后的對象本身,并不是類本身,因?yàn)轭惐旧硎遣粫唤忉屍鹘忉屵\(yùn)行的,因此它的屬性、方法、參數(shù)都不是真正的有效值;
4.self可以看做是一個占位符,因此它的名稱并不是一定要寫生self的,在python中self也不是關(guān)鍵字,這個名字是可以隨意定義的,但為了提高代碼的可讀性,最好是將其命名成self。
以上就是python中self的基本知識概要,通過學(xué)習(xí)我們知道獨(dú)立的函數(shù)中是不必帶有self的,這點(diǎn)小伙伴們一定要記住啦。
(推薦操作系統(tǒng):windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。)
標(biāo)題名稱:創(chuàng)新互聯(lián)Python教程:python中self可以在函數(shù)中使用嗎?
本文鏈接:http://m.fisionsoft.com.cn/article/dhpgssi.html


咨詢
建站咨詢
