Python3 在子類中呼叫父類的方法

2021-08-23 12:03:12 字數 1164 閱讀 3152

在子類派生出的新方法中,往往需要重用父類的方法,有兩種方式實現。

方式一:指名道姓,即父類名.父類方法()

方式二:super()

class vehicle:      # 定義交通工具類

country = 'china'

def __init__(self, name, speed, load, power):

self.name = name

self.speed = speed

self.load = load

self.power = power

def run(self):

print('開動啦')

class subway(vehicle):

def __init__(self, name, speed, load, power, line):

# super().__init__(name, speed, load, power) # super()等同於super(subway,self)

vehicle.__init__(self, name, speed, load, power) # 指名道姓方式

self.line = line

def run(self):

print('地鐵%s號線開動啦' % self.line)

vehicle.run(self)

s = subway('中國地鐵', '350km/h', '1000人/車廂', '電', 13)

s.run()

這兩種方式的區別是:方式一是跟繼承沒有關係的,而方式二的super()是依賴繼承的,並且即使沒有直接繼承關係,super仍然會按照mro繼續往後查詢。

#a沒有繼承b,但是a內super會基於c.mro()繼續往後找

class a:

def test(self):

super().test()

class b:

def test(self):

print('from b')

class c(a,b):

pass

c=c()

c.test() #列印結果:from b

print(c.mro())

#[, , , ]

Python高階 在子類中呼叫父類方法

class vehicle 定義交通工具類 country china def init self,name,speed,load,power self.name name self.speed speed self.load load self.power power defrun self pr...

Python 子類呼叫父類方法

python在繼承時,如果子類重寫了init 函式,則父類的init 不會被呼叫,這時如果子類只是想要對父類的init 函式進行簡單的擴充套件的話,是很不方便的。那麼有沒有比較方便的方法來從子類呼叫父類呢?第一種是直接使用父類的類名來直接呼叫。python3.3 class parent def i...

python子類呼叫父類的方法

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