Python類和方法中的self

2021-09-01 06:20:45 字數 1037 閱讀 8105

剛開始進入python的物件導向階段的學習。發現在給類寫方法時必須加上self引數,而方法(函式)塊中的變數(物件)名前有時加了self,有時沒加,常常被此示例程式弄得一頭霧水,於是老實回頭補課。網上關於這個self的解釋、詳解、深入剖析之類的文章數不勝數,可是要麼太簡,要麼太繁,要麼示範不夠直觀,反正是總難得「淺顯易懂」的感覺。

認真摸索一番後,我寫了下面這段測試**,希望對類似我這種理解能力的人有所幫助:

class abc(object):

x='x in abc'

print('abc- x:',x)

# self.x='x in abcself'

# print(self.x)

def aa(self,x):

x='x in aa'

print('aa - x:',x)

print('self.x:',self.x)

print('self is:',self)

t=abc()

t.aa("")

'''輸出結果:

abc- x: x in abc

aa - x: x in aa

self.x: x in abc

self is: <__main__.abc object at 0x0334f290>

'''

我的理解是,self指向於類本身,寫方法時加上self引數,表示構造乙個只屬於這個類的方法,呼叫類方法後,selft指代的就是這個類建立的例項物件。

因此,在方法塊中的某變數(如例中的x)前加上字首「self.」,表示引用這個類(例中的abc)的某屬性,如果類**中沒有該屬性,就會報錯(比如本例中如果沒有 x='x in abc' ,就會報:attributeerror: 'abc' object has no attribute 'x')。

另外,類本身是沒有self的概念,如果寫類本級**時加字首self,self被視作乙個名為self的普通屬性處理,執行時會報錯,提示self未定義(nameerror: name 'self' is not defined)。

OC中description方法和sel

補充兩個知識點 一 description方法 description方法包括類方法和物件方法。nsobject 類所包含 一 基本知識 description 物件方法 使用nslog和 輸出某個物件時,會呼叫物件的 description 方法,並拿到返回值進行輸出。description 類方...

iOS開發之IMP和SEL(方法和類的反射)

1 sel 類方法的指標,相當於一種編號,區別與imp!sel是通過表取對應關係的imp,進行方法的呼叫!2 獲取sel和imp方法和呼叫 sel methodsel selector str self performselector methodsel withobject nil 方法的呼叫 n...

python中靜態方法和類方法

方法是作為類屬性儲存的函式 def get size self pass在python2,3中的不同點。2 pizza.get size 會報乙個未繫結的函式的錯誤 3 pizza.get size 會報乙個缺少引數的錯誤,即,python3可以動態的傳入方法所屬於的類的任意乙個例項 靜態方法 靜態...