在子類派生出的新方法中,往往需要重用父類的方法,有兩種方式實現。
方式一:指名道姓,即父類名.父類方法()
方式二: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...