class a(object):pass # 父類,基類,超類
class b:pass # 父類,基類,超類
class a_son(a,b):pass # 子類,派生類
class ab_son(a):pass # 子類,派生類
乙個類 可以被多個類繼承
乙個類 可以繼承多個父類 —— python裡
print(a_son.bases)
print(ab_son.bases)
print(a.bases) # python3 -新式類# 沒有繼承父類預設繼承object
class animal:
definit(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp
self.func()
def func(self):
print(123)
class dog(animal):
def func(self):
print(456)
def bite(self,person):
person.hp -= self.aggr
d = dog()
class person(animal):
pass
jin = dog(『金老闆』,200,500)
print(jin.name)
狗類 吃 喝 看門(guard)
鳥類 吃 喝 下蛋(lay)
class animal:
definit(self):
print(『執行animal.init』)
self.func()
def eat(self):
print(』%s eating』%self.name)
def drink(self):
print(』%s drinking』%self.name)
def func(self):
print(『animal.func』)
class dog(animal):
def guard(self):
print(『guarding』)
def func(self):
print(『dog.func』)
dog = dog()
class bird(animal):
definit(self,name):
self.name = name
def lay(self):
print(『laying』)
dog.drink()
bird.drink()
dog.guard()
bird.lay()
class animal:
definit(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp
def eat(self):
print('吃藥回血')
self.hp+=100
class dog(animal):
definit(self,name,aggr,hp,kind):
animal.init(self,name,aggr,hp) #
self.kind = kind # 派生屬性
def eat(self):
animal.eat(self) # 如果既想實現新的功能也想使用父類原本的功能,還需要在子類中再呼叫父類
self.teeth = 2
def bite(self,person): # 派生方法
person.hp -= self.aggr
jin = dog(『金老闆』,100,500,『吉娃娃』)
jin.eat()
print(jin.hp)
class person(animal):
definit(self,name,aggr,hp,***):
animal.init(self,name,aggr,hp)
self.*** = *** # 派生屬性
self.money = 0 # 派生屬性
def attack(self,dog):
dog.hp -= self.aggr
def get_weapon(self,weapon):
if self.money >= weapon.price:
self.money -= weapon.price
self.weapon = weapon
self.aggr += weapon.aggr
else:
print("餘額不足,請先充值")
#alex = person(『alex』,1,2,none)
#alex.eat()
#print(alex.hp)
#jin.bite(alex)
#print(alex.hp)
父類中沒有的屬性 在子類中出現 叫做派生屬性
父類中沒有的方法 在子類中出現 叫做派生方法
只要是子類的物件呼叫,子類中有的名字 一定用子類的,子類中沒有才找父類的,如果父類也沒有報錯
如果父類 子類都有 用子類的
如果還想用父類的,單獨呼叫父類的:
父類名.方法名 需要自己傳self引數
super().方法名 不需要自己傳self
正常的**中 單繼承 === 減少了**的重複
繼承表達的是一種 子類是父類的關係
class animal:
definit(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp
def eat(self):
print(『吃藥回血』)
self.hp+=100
class dog(animal):
definit(self,name,aggr,hp,kind):
super().init(name,aggr,hp) # 只在新式類中有,python3中所有類都是新式類
self.kind = kind # 派生屬性
def eat(self):print(『dog eating』)
jin = dog(『金老闆』,200,500,『teddy』)
print(jin.name)
jin.eat()
super(dog,jin).eat()
Python 繼承基礎
一 永不變的三個問答 1 什麼是繼承 繼承一種新建類的方式,新建的類稱之為子類 派生類,被繼承的類稱之為父類 基類 超類 2 為什麼要用繼承 減少類與類之間 元素 3 如何用繼承 class parent1 繼承的父類 pass print parent1.bases class parent2 子...
python基礎 繼承和多繼承
繼承 class a defspam self print a.spam defadd self,x,y return x y class b a defspam self 如果子類要對父類的方法進行重寫,再想呼叫父類的方法,就需要使用super 方法名 的形式 print b.spam super...
python基礎 繼承和多繼承
繼承 class a defspam self print a.spam defadd self,x,y return x y class b a defspam self 如果子類要對父類的方法進行重寫,再想呼叫父類的方法,就需要使用super 方法名 的形式 print b.spam super...