super的用法和注意事項

2021-09-29 02:25:04 字數 1363 閱讀 1672

super第乙個引數是指定呼叫誰的直接父類,

第二個引數指定當呼叫時,傳遞什麼作為方法的第乙個引數,一般如果是例項方法的話第乙個引數是self,類方法的話第乙個引數為cls

如果子類直接呼叫 父類的方法,可以直接預設使用super()即可,如果需要呼叫爺爺或者再以上的父類,則需要傳參進去。

使用爺爺類的例項方法:

class grandfather:

def gfprint(self):

print('grandfather')

class father(grandfather):

def fprint(self):

super(father,self).gfprint() #等價於super().print()

class son(father):

def sprint(self):

super(father,self).gfprint()

son().sprint()

使用爺爺類的類方法:

class grandfather:        

@classmethod

def cls_print(cls):

print('grandfather.cls_print')

class father(grandfather):

@classmethod

def cls_father(cls):

super(father,cls).cls_print() #等價於super().cls_print()

class son(father):

@classmethod

def cls_son(cls):

super(father,cls).cls_print()

son().cls_son()

注意事項:

當父類含有帶引數的__init__方法的時候,子類在繼承的時候一定要乙個初始化方法,並且在初始化方法中呼叫父類的初始化方法。

class father:

def __init__(self,a,b):

self.a = a

self.b = b

def sum(self):

return self.a+self.b

class son(father):

def __init__(self,a,b,c):

self.c = c

super().__init__(a,b) #等價於 super(son,self).__init__(a,b)

son = son(1,2,3)

son.sum()

linq list select用法注意事項

下面是我自己做的乙個例子 listordlist new list var b ordlist.where o o.trackingno aa tolist var aa ordlist.select o o.trackingno aa tolist var c ordlist.select o o...

JNative用法注意事項

公司要做個跟裝置打交道的web系統,需要j a呼叫dll。搞j a的同事說jnative看起來挺好使的,找俺幫忙調通。用的是1.3.1版本 環境設定。jnative的除錯資訊需要開啟才能更清楚些,要不總是說沒載入庫,跟沒說一樣。system.setproperty jnative.debug tru...

AJPFX關於this用法和注意事項

this 代表物件。就是所在函式所屬物件的引用。哪個物件呼叫了this所在的函式,this就代表哪個物件,就是哪個物件的引用。開發時在定義功能時,如果該功能內部使用到了呼叫該功能的物件,這時就用this來表示這個物件。this 還可以用於建構函式間的呼叫。呼叫格式 this 實際引數 this物件後...