天天看點

python粘性拓展_python 繼承:重寫、拓展(六)

1.繼承:父類有的子類也有

2.多繼承:若繼承多個父類有相同的函數,則繼承前面的函數,傳遞參數的個數也與繼承的函數位置有關

3.超繼承:針對繼承一個父類使用,不僅有父類的特寫同時也有自己的新特性 super(類名,self).屬性/方法名(參數)

4.重寫:子類的函數名與父類的一緻,就會重寫函數override覆寫,調用函數的時候隻調用子類自己的函數,不在調用父類的,父類不能調用子類的函數,屬性。

5.拓展:父類沒有的函數,子類有。

class Dad: #父類

def __init__(self,name,age):

self.name=name

self.age=age

def sport(self,hours):

print("隻喜歡遊泳,每天遊泳{0}小時".format(hours))

def cooking(self):

print("隻會做蛋炒飯")

def smoke(self):

print("喜歡吸煙")

class Son(Dad): #子類繼承父類

def sport(self,hours,*args): #重寫

super(Son,self).sport(hours) #保持父類的特性

sport_name=''

for item in args:

sport_name+=item

sport_name+='、'

print("我喜歡{0}這些運動。".format(sport_name))

def coding(self,language="python"): #拓展

print("我是一個程式員,名字{0},今年{1},喜歡{2}編碼".format(self.name,self.age,language))

son_1=Son("牛牛",8) #執行個體化

son_1.sport(2,"籃球","足球","排球")

son_1.coding()

例子:猜拳遊戲

import random

class GussingGame:

def choose_role(self):

role={"1":"曹操","2":"張飛","3":"劉備"}

input_role=input("請選擇角色:1:曹操2:張飛3:劉備")

return role[input_role]

def human_fist(self):

input_num=input("請出拳:1石頭2剪刀3布")

return int(input_num)

def machine_fist(self):

input_num=random.randint(1,3)

return input_num

def human_vs_machine(self):

human_win=0

machine_win=0

ping=0

fist_num={"1":"石頭","2":"剪刀","3":"布"}

#選擇角色

role=self.choose_role()

while True:

#出拳

human_fist=self.human_fist()

#電腦出拳

machine_fist=self.machine_fist()

result=human_fist-machine_fist

print(role+"出拳:{0}".format(fist_num[str(human_fist)]))

print("電腦出拳:{0}".format(fist_num[str(machine_fist)]))

if result==-1 or result==2:

print("恭喜你,赢了!")

human_win+=1

elif result==-2 or result==1:

print("很遺憾,你輸了!")

machine_win+=1

else:

print("平局!")

ping+=1

choice=input("是否還有繼續輸入【y】繼續,輸入【n】結束!")

if choice=='y':

continue

elif choice=='n':

print("遊戲結束!")

print("本次比賽{0}次,你赢{1}次,電腦赢{2}次,平局{3}次".format(human_win+machine_win+ping,human_win,machine_win,ping))

break

if __name__ == '__main__':

gg=GussingGame()

gg.human_vs_machine()