在子類中重用父類的屬性

2022-06-11 04:33:07 字數 2254 閱讀 7436

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

一、指名道姓(不依賴繼承)

class

hero:

def__init__

(self,nickname,life_value,aggresivity):

self.nickname =nickname

self.life_value =life_value

self.aggresivity =aggresivity

defattack(self,enemy):

enemy.life_value -=self.aggresivity

class

libai(hero):

camp = "

tangchao

"def

__init__

(self,nickname,life_value,aggresivity,weapon):

hero.

__init__

(self,nickname,life_value,aggresivity)

self.weapon =weapon

defattack(self,enemy):

hero.attack(self,enemy)

#指名道姓,有幾個引數就需要傳幾個引數

print("

from libai class")

class

huamulan(hero):

camp = "

changcheng

"l1 = libai("

進一步",100,60,"

劍")

二、super()()(依賴繼承關係)

class

hero:

def__init__

(self,nickname,life_value,aggresivity):

self.nickname =nickname

self.life_value =life_value

self.aggresivity =aggresivity

defattack(self,enemy):

enemy.life_value -=self.aggresivity

class

libai(hero):

camp = "

tangchao

"def

__init__

(self,nickname,life_value,aggresivity,weapon):

#hero.__init__(self,nickname,life_value,aggresivity)

#super(libai,self).__init__(nickname,life_value,aggresivity) # python2的寫法

super().__init__(nickname,life_value,aggresivity) #

python3的寫法

self.weapon =weapon

defattack(self,enemy):

super(libai,self).attack(enemy)

#依賴繼承 super(libai,self)是指物件,.attack是呼叫物件的方法

print("

from libai class")

class

huamulan(hero):

camp = "

changcheng

"l1 = libai("

進一步",100,60,"

劍")

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

#

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

class

a:

deftest(self):

super().test()

class

b:

deftest(self):

print('

from b')

class

c(a,b):

pass

c=c()

c.test()

#列印結果:from b

print

(c.mro())

#[, , , ]

python子類重用父類的兩種方式

在子類派生的新方法中重用父類功能的兩種方法 方式一 與繼承無關 指名道姓法,直接用類名.函式名的方法 注意只能當普通函式用,需要把所有的值傳入 classoldboypeople school oldboy def init self,name,age,self.name name self.age...

子類繼承父類重寫父類的屬性值問題

試想一下 的執行結果 package com.syc.test public class a class fatherclass class sonclass extends fatherclass 程式的執行結果是 你想對了嗎?我們稍微做乙個改變,繼續試想一下 的執行結果 package com....

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...