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()