Python 子類呼叫父類方法

2021-06-19 18:47:30 字數 1577 閱讀 4679

python在繼承時,如果子類重寫了init()函式,則父類的init()不會被呼叫,這時如果子類只是想要對父類的init()函式進行簡單的擴充套件的話,是很不方便的。那麼有沒有比較方便的方法來從子類呼叫父類呢?

第一種是直接使用父類的類名來直接呼叫。(python3.3)

class parent:

def __init__(self):

print('this is parent init.')

def sleep(self):

print("parent sleeps.")

class child(parent):

def __init__(self):

parent.__init__(self)

print('this is child init.')

def sleep(self):

print("child sleeps.")

c=child()

第二種是使用形如super(type, obj).methodname(args)呼叫,第乙個引數表示從哪個類開始找其父類(不包括其自身),第二個引數表示類例項(一般使用self),引數args在父類方法的引數只有self時不寫。

class parent:

def __init__(self):

print('this is parent init.')

def sleep(self):

print("parent sleeps.")

class child(parent):

def __init__(self):

#parent.__init__(self)

super(child,self).__init__()

print('this is child init.')

def sleep(self):

print("child sleeps.")

c=child()

當在類內部使用時,super(type, obj).methodname(args)中的type, obj可以省略不寫。

另外,在類外面也可以使用這一函式,比如當子類覆蓋了父類的某一方法後,想要通過子類的物件呼叫父類的這一方法:

class parent:

def __init__(self):

print('this is parent init.')

def sleep(self):

print("parent sleeps.")

class child(parent):

def __init__(self):

#parent.__init__(self)

super().__init__()

print('this is child init.')

def sleep(self):

print("child sleeps.")

c=child()

c.sleep()

super(child,c).sleep()

python子類呼叫父類的方法

情況一 子類需要自動呼叫父類的方法 子類不重寫 init 方法,例項化子類後,會自動呼叫父類的 init 的方法。class father object def init self,name self.name name print name s self.name def getname self...

python子類呼叫父類的方法

from python和其他物件導向語言類似,每個類可以擁有乙個或者多個父類,它們從父類那裡繼承了屬性和方法。如果乙個方法在子類的例項中被呼叫,或者乙個屬性在子類的例項中被訪問,但是該方法或屬性在子類中並不存在,那麼就會自動的去其父類中進行查詢。繼承父類後,就能呼叫父類方法和訪問父類屬性,而要完成整...

python子類呼叫父類的方法

python和其他物件導向語言類似,每個類可以擁有乙個或者多個父類,它們從父類那裡繼承了屬性和方法。如果乙個方法在子類的例項中被呼叫,或者乙個屬性在子類的例項中被訪問,但是該方法或屬性在子類中並不存在,那麼就會自動的去其父類中進行查詢。繼承父類後,就能呼叫父類方法和訪問父類屬性,而要完成整個整合過程...