python基礎 繼承

2021-09-02 22:36:07 字數 3558 閱讀 6036

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