第四次测试--面向对象
?
面向對象
1.請簡述類、對象、實例化、實例這些名詞的含義:
#類 : 是對具有相同屬性和相似行為的一類事物的抽象 #對象: 是一個具有具體屬性值的類的實例化 #實例化 : 從一個抽象的類 變成(產生) 一個具體對象的過程 #實例: 就是對象2.面向對象的三大特性是什么?
#繼承 多態 封裝?3.什么是方法?類中可以定義哪幾種方法?
# 在類中的函數就是方法,描述的是一類事物的行為 # 方法 類方法 靜態方法 私有方法 內置方法 屬性方法(@property)4.什么是屬性?類中可以定義哪幾種屬性?
# 類 和 對象所擁有的的具體的"值"指標 # 私有屬性 靜態屬性 動態屬性(方法) 對象屬性?5.請簡述類方法和靜態方法有哪些區別?
# 裝飾器不同 @staticmethod @classmethod # 類方法中有一個默認的參數cls,而靜態方法沒有?6.請簡述新式類和經典類的區別?
#在py3里 所有的多繼承問題 都符合 廣度優先算法 #python3中的所有類 都默認繼承object#如果一個類 繼承了object 這個類就被稱為新式類 #沒有繼承object類 就被稱為經典類#深度優先 廣度優先 都是一種遍歷算法,把這個圖中所有的項都走一遍,且不會重復#經典類 遵循 深度優先算法 且沒有mro方法 python2 #新式類 遵循 廣度優先算法 有mro方法 py2 py3 #py3 super #單繼承中 super就是找父類 #多繼承 super尋找的軌跡是根據mro(廣度優先)順序的7.有一個類定義:?
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
1)初始化10個不同的對象
p1=Person('a',10) p2=Person('b',11) p3=Person('c',12) p4=Person('d',13) p5=Person('e',14) p6=Person('f',15) p7=Person('g',16) p8=Person('h',17) p9=Person('i',18) p10=Person('j',19)2)求最高age的對象的name
l=[p1,p2,p3,p4,p5,p6,p7,p8,p9,p10]#創建一個10個對象的列表 num=0#定義num=0 for i in l:#循環列表if i.age>num:#如果對象的age屬性大于0num=i.age#則num=這個年齡 print(num)8. 模擬cs游戲
人物角色分為警察和匪徒兩種,定義成兩個類
所有的警察的角色都是police
每個警察都有自己獨有名字,生命值,武器,性別
每個都可以開槍攻擊敵人,切攻擊目標不能是police
所有的警察的角色都是terrorist
每個匪徒都有自己獨有名字,生命值,武器,性別
每個都可以開槍攻擊敵人,切攻擊目標不能是terrorist
9. 實例化一個警察,一個匪徒,警察攻擊匪徒,匪徒掉血
p=Police('cris','man','m4a1')#實例化一個警察 t=Terrorist('alex','man','ak47')#實例化一個匪徒 p.ataik(t)#警察攻擊匪徒 print(t.value)#顯示匪徒的血值10. 提取警察類和匪徒類相似之處定義成一個父類,使用繼承的方式減少代碼重復
class pepo:#定義一個人的類def __init__(self, name, gande, wuqi, value=100, ):#初始化方法self.name = name#name屬性self.gande = gande#伙屬性self.wuqi = wuqi#武器屬性self.value = value#血值屬性class Police(pepo):#定義一個警察,繼承人的類屬性def ataik(self, name):#定義一個攻擊方式if not isinstance(name,Police):#如果不是警察的類name.value-=10#匪徒的血值減等于10else:print('友軍')#否則是友軍class Terrorist(pepo):#定義一個匪徒def ataik(self, name):#攻擊方式if not isinstance(name,Terrorist):#如果不是匪徒的類name.value-=10#警察生命值減等于10else:print('友軍') #否則是友軍?思考題:
有一個類的init方法如下:
class Person:
def __init__(self,name,age,sex,weight):
self.name = name
self.sex = sex
self.age = age
self.weight = weight
假設有100個person的對象,
若兩個對象的obj1,obj2的name和sex屬性相同
即obj1.name==obj2.name and obj1.sex==obj2.sex
我們認為兩個對象為同一個對象,已知一個列表中的100個對象,對這100個對象進行去重。
提示:
重寫Person類重的兩個內置方法
?
轉載于:https://www.cnblogs.com/chongdongxiaoyu/p/8584218.html
總結
以上是生活随笔為你收集整理的第四次测试--面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux性能分析工具与图形化方法
- 下一篇: 精度问题